Doctrine DQL:如何将表达式反转到反面

时间:2013-08-05 12:16:47

标签: symfony doctrine-orm dql doctrine-query

我希望获取一个不存在反向关联的实体(在1:1关联上)

我收到错误:

  

DQL查询中不支持反向的单值关联路径表达式。用一个     显而易见的连接。

查询:

$query = $this->getEntityManager()->createQuery("
                SELECT DISTINCT(p.date)
                FROM MainBundle:Price p
                WHERE p.emaPrice IS NULL
                ORDER BY p.date ASC
            ")
            ->setMaxResults(1);
        $date = $query->getOneOrNullResult();

我理解错误,但我真的不肯修复它。我已经读过我应该添加一个明确的JOIN,但我已经添加了它,但仍然没有运气。

修改 查询加入:

$query = $this->getEntityManager()->createQuery("
        SELECT DISTINCT(p.date)
        FROM MainBundle:Price p
        JOIN MomentumBundle:EmaPrice ep
        WITH ep.id = p.emaPrice
        WHERE p.emaPrice IS NULL
        ORDER BY p.date ASC
    ")
    ->setMaxResults(1);
$date = $query->getOneOrNullResult();

1 个答案:

答案 0 :(得分:4)

我要感谢@Flip和@lifo,感谢他们帮助我解决这个问题:

$query = $this->getEntityManager()->createQuery("
        SELECT DISTINCT(p.date)
        FROM MainBundle:Price p
        LEFT JOIN MomentumBundle:EmaPrice ep
        WITH ep.price = p.id
        WHERE ep IS NULL
        ORDER BY p.date ASC
    ")
    ->setMaxResults(1);
$date = $query->getOneOrNullResult();