Symfony DQL原则:如何将表达式转换到反向侧

Symfony DQL原则:如何将表达式转换到反向侧,symfony,doctrine-orm,dql,doctrine-query,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

我希望获取反向关联不存在的实体(在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();
我理解这个错误,但我真的被困在修复它上了。我已经读到我应该添加一个显式连接,但我已经添加了它,仍然没有运气

编辑 使用联接进行查询:

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

我要感谢@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();

使用联接时,您的查询是什么样子的?@Flip添加了联接查询可以在本机SQL中使用吗?我对您的查询感到困惑。您在
ep.id=p.emaPrice
上加入,但在
中p.emaPrice为NULL
。即使查询有效,也不会匹配任何内容。在这种情况下,需要左连接