【问题标题】:Symfony2 + Doctrine, find in relationsSymfony2 + Doctrine,在关系中查找
【发布时间】:2017-02-16 13:04:22
【问题描述】:

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

说我们有

+---------------+
| 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 的主实体的对象集合(苹果) - 因为这两个参数都会匹配苹果

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多