Die Klasse Doctrine\ORM\EntityRepository
implementiert die Doctrine\Common\Collections\Selectable
API.
Die Selectable
Benutzeroberfläche ist sehr flexibel und recht neu, aber Sie können Vergleiche und komplexere Kriterien sowohl für Repositorys als auch für einzelne Sammlungen von Elementen problemlos verarbeiten, unabhängig davon, ob es sich um ORM- oder ODM-Probleme oder um vollständig separate Probleme handelt.
Dies wäre ein Vergleichskriterium, wie Sie es gerade angefordert haben, wie in Doctrine ORM 2.3.2
:
$criteria = new \Doctrine\Common\Collections\Criteria();
$criteria->where($criteria->expr()->gt('prize', 200));
$result = $entityRepository->matching($criteria);
Der Hauptvorteil dieser API besteht darin, dass Sie hier eine Art Strategiemuster Selectable
implementieren. Sie funktioniert mit Repositorys, Sammlungen, verzögerten Sammlungen und überall dort, wo die API implementiert ist.
Auf diese Weise können Sie Dutzende spezieller Methoden entfernen, die Sie für Ihre Repositorys geschrieben haben (wie z. B. findOneBySomethingWithParticularRule
), und sich stattdessen darauf konzentrieren, Ihre eigenen Kriterienklassen zu schreiben, die jeweils einen dieser bestimmten Filter darstellen.