Doctrine Query,关联ManyToOne

时间:2013-03-05 22:31:35

标签: doctrine-orm doctrine dql

我有两个实体:

Class A {

    /**
     * @ORM\ManyToOne(...)
     */
    private $b;

    /**
     * @ORM\Column(name="date", type="date")
     */
    private $date;
}

Class B {

    /**
     * @ORM\OneToMany(...)
     */
    private $a;

}

需要查询以获取您所有“A”的所有实体“B”,并将所有日期“日期”设置为我设置为参数的日期。

现在有这些查询,但没有结果:

  

“SELECT b FROM Entity:B b INNER JOIN b.a a WHERE a.date>:date”

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

public function myfunction($date){
    $dql = "SELECT b FROM Entity:B as b WHERE b.a IN (".
               "SELECT a.id FROM Entity:A as a WHERE a.date > :date".
           ")";
    $query = $this->getEntityManager()
        ->createQuery($dql)
        ->setParameter('date', $date)
    ;

    return $query->getResult();
}

我测试了一些结构相似的实体