0

我有两个相关的实体,我需要一个查询来检查 entityOne 是否与 entityTwo 有两个不同的关系(作为 diff 字段的额外列)。

一个简单的“WHERE entityTwo.diff_field = 1 AND entityTwo.diff_field = 2”不起作用。

我怎样才能做到这一点?

谢谢

更新:

  $query = $this->createQueryBuilder('one');
  $query->addSelect('two')->leftJoin('one.two', 'two');
  $query->where('two.id = :a')->setParameter('a',1);
  $query->andWhere('two.id = :b')->setParameter('b',2);

实体一

class EntityOne {
     /**
     * @ORM\Id
     * @ORM\Column(type="integer", nullable=false);
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

     /**
     * @ORM\OneToMany(targetEntity="EntityTwo", mappedBy="one")
     */
    protected $two;
}

实体二

class EntityTwo {
     /**
     * @ORM\Id
     * @ORM\Column(type="integer", nullable=false);
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

     /**
     * @ORM\ManyToMany(targetEntity="EntityOne", inversedBy="two", cascade={"persist"})
     * @ORM\JoinTable(name="one_two_xref")
     */
    protected $one;
}
4

1 回答 1

0

我认为您需要两个 EXISTS 子查询。

您希望(我认为)选择具有 diffType 1 的链接 entityTwo 和 difftype 2 的链接 entityTwo 的 entityOnes。

如果您在本文档中向下滚动到“带有相关子查询的 WHERE 子句中的 EXISTS”:

http://docs.doctrine-project.org/en/2.1/reference/dql-doctrine-query-language.html

我认为您需要的是一个类似的查询,但有两个单独的 EXISTS 子查询,例如:

WHERE EXISTS (SELECT EntityTwo ... DiffType = 1)
    AND EXISTS (SELECT EntityTwo ... DiffType = 2)
于 2013-07-29T13:45:44.813 回答