2016-10-07 6 views
1

Я собираюсь разработать API для фильтрации объектов с помощью пакета fos_rest в Symfony2 и Doctrine с MySQL. Предположим, у меня есть Сущность, которая имеет отношения с разными объектами, которые имеют некоторые свойства. Теперь в интерфейсе я хотел бы создать фильтр, в котором можно фильтровать главную сущность по свойствам связанных объектов. Как это можно сделать?Symfony2 + Doctrine, найти в отношениях

говорят, что мы имеем

+---------------+ 
| Master Entity | 
+----+----------+ 
| id | name  | 
+----+----------+ 
| 1 | Apple | 
+----+----------+ 
| 3 | Berry | 
+----+----------+ 


+-------------------+ 
| Property Entity | 
+----+------+-------+ 
| id | id_m | value | 
+----+------+-------+ 
| 1 | 1 | green | 
+----+------+-------+ 
| 2 | 1 | yello | 
+----+------+-------+ 
| 3 | 1 | red | 
+----+------+-------+ 
| 4 | 3 | pink | 
+----+------+-------+ 

И я хочу, чтобы иметь фильтр, где я фильтровать по значениям в Entity собственности

Я хотел бы сделать что-то вроде

$em->getRepository('AcmeBundle\MasterEntity')->findBy(array("PropertyEntity:value" => "red","PropertyEntity:value" => "yello")) 

поэтому было бы вернуть коллекцию объектов Мастера Entity с ID = 1 (яблоко) - потому что оба параметра будут соответствовать Apple,

ответ

0

Вы можете создать конструктор запросов вместо использования findBy

$qb->select('m') 
    ->from('AcmeBundle\MasterEntity', 'm') 
    ->join('m.PropertyEntity', 'p') 
    ->where('p.value IN (:values)') 
    ->setParameter('values',['red','yellow']); 
Смежные вопросы