Symfony DQL原则:如何将表达式转换到反向侧
我希望获取反向关联不存在的实体(在1:1关联上) 我得到一个错误: 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
$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
。即使查询有效,也不会匹配任何内容。在这种情况下,需要左连接