Клас Doctrine\ORM\EntityRepository
реалізує Doctrine\Common\Collections\Selectable
API.
Selectable
Інтерфейс дуже гнучкий і досить новий, але це дозволить вам обробляти порівняння і більш складні критерії легко на обох сховищ і окремих колекцій предметів, незалежно від того , в ОРЗ або ODM або зовсім різні проблеми.
Це було б критерієм порівняння, як ви щойно просили, як у Doctrine ORM 2.3.2
:
$criteria = new \Doctrine\Common\Collections\Criteria();
$criteria->where($criteria->expr()->gt('prize', 200));
$result = $entityRepository->matching($criteria);
Головною перевагою цього API є те, що ви реалізуєте тут якийсь шаблон стратегії, і він працює зі сховищами, колекціями, ледачими колекціями та скрізь, де Selectable
реалізований API.
Це дозволяє вам позбутися десятків спеціальних методів, які ви написали для своїх сховищ (наприклад findOneBySomethingWithParticularRule
), і замість цього зосередитись на написанні власних класів критеріїв, кожен із яких представляє один із цих конкретних фільтрів.