1

我有 2 个实体:

Class A {

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

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

Class B {

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

}

需要一个查询来获取所有实体“B”,即您的“A”具有以下所有日期“日期”到我设置为参数的日期。

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

“从实体中选择 b:B b INNER JOIN ba a WHERE a.date > :date”

4

1 回答 1

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();
}

我在我的一些具有相似结构的实体上进行了测试并且它有效

于 2013-03-06T15:37:10.163 回答