otobank / phpstan-doctrine-criteria
Doctrine Criteria extensions for PHPStan
Installs: 1 116
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 3
Forks: 1
Open Issues: 0
Requires
- php: ~7.1
- doctrine/collections: ^1.5
- nikic/php-parser: ^4.3
- otobank/doctrine-target-aware-criteria: ^0.2.0
- phpstan/phpstan: ^0.12.4
- phpstan/phpstan-doctrine: ^0.12.12
Requires (Dev)
- doctrine/common: ^2.7
- friendsofphp/php-cs-fixer: ^2.14
- phpunit/phpunit: ^7.5
This package is auto-updated.
Last update: 2020-12-30 08:53:27 UTC
README
This extension provides following features:
- Validates entity fields to which criteria is applied.
- Depends on phpstan-doctrine, and includes its features.
Usage
composer require otobank/doctrine-target-aware-criteria
composer require --dev otobank/phpstan-doctrine-criteria
includes: - vendor/otobank/phpstan-doctrine-criteria/extension.neon - vendor/otobank/phpstan-doctrine-criteria/rules.neon
Configuration
parameters: doctrine: objectManagerLoader: bootstrap/phpstan_doctrine_manager.php
See: https://github.com/phpstan/phpstan-doctrine
You must use custom criteria.
FooCriteria
namespace App\Criteria; use App\Entity\Foo; use Otobank\PHPStan\Doctrine\Criteria; class FooCriteria extends Criteria { public static function getTargetClass() : string { return Foo::class; } }
Use FooCriteria
namespace App\Entity; use App\Criteria\FooCriteria; class Bar { /** * @var \Doctrine\Common\Collections\Collection * * @ORM\OneToMany(targetEntity="Foo", mappedBy="bar") */ private $foos; public function getFilteredFoos() { $criteria = FooCriteria::create(); $criteria = $criteria ->where($criteria->expr()->eq('fieldX', 1)) // Check if fieldX is defined in Foo class ; return $this->foos->matching($criteria); } }
Author
Toshiyuki Fujita - tfujita@otobank.co.jp - https://github.com/kalibora
License
Licensed under the MIT License - see the LICENSE file for details
OTOBANK Inc.