La classe Doctrine\ORM\EntityRepository
met en œuvre Doctrine\Common\Collections\Selectable
API.
En Selectable
est très flexible et assez nouvelle, mais elle vous permettra de gérer facilement les comparaisons et les critères plus complexes à la fois sur les référentiels et les collections uniques d'éléments, indépendamment du fait que ce soit dans ORM ou ODM ou des problèmes complètement séparés.
Il s'agirait d'un critère de comparaison comme vous venez de le demander dans Doctrine ORM. 2.3.2
:
$criteria = new \Doctrine\Common\Collections\Criteria();
$criteria->where(\Doctrine\Common\Collections\Criteria::expr()->gt('prize', 200));
$result = $entityRepository->matching($criteria);
Le principal avantage de cette API est que vous mettez en œuvre une sorte de modèle de stratégie et qu'elle fonctionne avec les référentiels, les collections, les collections paresseuses et partout où l'API est utilisée. Selectable
est mise en œuvre.
Cela vous permet de vous débarrasser de dizaines de méthodes spéciales que vous avez écrites pour vos dépôts (telles que findOneBySomethingWithParticularRule
), et concentrez-vous plutôt sur l'écriture de vos propres classes de critères, chacune représentant un de ces filtres particuliers.