Symfony2 + Doctrine,在关系中找到

时间:2016-10-07 13:45:21

标签: php mysql entity-framework symfony doctrine-orm

我正在考虑使用Symfony2中的fos_rest包和MySQL中的Doctrine来设计API来过滤对象。 让我们说我有一个主实体,它与具有某些属性的不同实体有关系。 现在在前端我想创建一个过滤器,其中可以通过相关实体的属性过滤主实体。那怎么可行?

说我们有

+---------------+
| 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  |
+----+------+-------+

我希望有一个过滤器,我按照属性实体

中的值进行过滤

我想做点什么

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

所以它将返回ID为1(苹果)的主实体的对象集合 - 因为这两个参数都匹配Apple

1 个答案:

答案 0 :(得分:0)

您可以创建查询构建器,而不是使用findBy

$qb->select('m')
   ->from('AcmeBundle\MasterEntity', 'm')
   ->join('m.PropertyEntity', 'p')
   ->where('p.value IN (:values)')
   ->setParameter('values',['red','yellow']);