Lớp Doctrine\ORM\EntityRepository
triển khai Doctrine\Common\Collections\Selectable
API.
Các Selectable
giao diện là rất linh hoạt và khá mới, nhưng nó sẽ cho phép bạn xử lý so sánh và tiêu chí phức tạp hơn một cách dễ dàng trên cả hai kho và bộ sưu tập duy nhất của mặt hàng, không phân biệt nếu trong ORM hay ODM hoặc các vấn đề hoàn toàn riêng biệt.
Đây sẽ là một tiêu chí so sánh như bạn vừa yêu cầu như trong Doctrine ORM 2.3.2
:
$criteria = new \Doctrine\Common\Collections\Criteria();
$criteria->where($criteria->expr()->gt('prize', 200));
$result = $entityRepository->matching($criteria);
Ưu điểm chính trong API này là bạn đang triển khai một số loại mô hình chiến lược ở đây và nó hoạt động với các kho lưu trữ, bộ sưu tập, bộ sưu tập lười biếng và ở mọi nơi mà Selectable
API được triển khai.
Điều này cho phép bạn loại bỏ hàng tá phương pháp đặc biệt mà bạn đã viết cho kho lưu trữ của mình (như findOneBySomethingWithParticularRule
) và thay vào đó tập trung vào việc viết các lớp tiêu chí của riêng bạn, mỗi lớp đại diện cho một trong những bộ lọc cụ thể này.