Php 条令2/MySQL:无法将SQL左连接转换为DQL左连接

Php 条令2/MySQL:无法将SQL左连接转换为DQL左连接,php,mysql,doctrine-orm,Php,Mysql,Doctrine Orm,因此,我的SQL的目标是获取公寓和有关公寓的一些信息 这是SQL: SELECT apartment.id, AVG(review.staff), COUNT(distinct review.id), city.name as city_name, state.state as state_name, MIN(room.price_per_night) FROM room LEFT JOIN apartment ON room.apartment_id=apartment.id

因此,我的SQL的目标是获取公寓和有关公寓的一些信息

这是SQL:

SELECT apartment.id, AVG(review.staff), COUNT(distinct review.id), city.name as city_name, state.state as state_name,
    MIN(room.price_per_night)
FROM room
    LEFT JOIN apartment ON room.apartment_id=apartment.id
    LEFT JOIN review ON room.apartment_id=review.apartment_id
    LEFT JOIN city ON apartment.city_id = city.id
    LEFT JOIN state ON city.city_state_id = state.id
GROUP BY apartment.id;
这很有效

但当我尝试将其转换为DQL时,一切都很顺利,直到我尝试加入审查表:

    $qb = $em->createQueryBuilder('c');

    $qb->select("MIN(r.price_per_night), rev.id")
       ->from("TechforgeApartmentBundle:Room", 'r')
       ->leftJoin('r.apartment', 'a')
       ->leftJoin('Review', 'rev', \Doctrine\ORM\Query\Expr\Join::WITH, 'r.apartment = rev.apartment')
       ->groupBy('a.id');
它总是抱怨以前没有确定审查:

[Semantic Error]第0行,第116列,靠近'rev WITH r.partment':错误: 连接路径表达式中使用了标识变量审阅,但未使用 以前没有定义


我做了很多尝试,但似乎没有任何帮助。

我很肯定你可以放弃这个条件,假设公寓和评论有一个映射关联

$qb->select('MIN(r.price_per_night), rev.id')
   ->from('TechforgeApartmentBundle:Room', 'r')
   ->leftJoin('r.apartment', 'a')
   ->leftJoin('a.review', 'rev')
   ->groupBy('a.id');
如果出于某种原因确实需要WITH条件,则语法如下所示:

->leftJoin('a.review', 'rev', 'WITH', 'a.id = rev.apartment_id')

我通过使用原始sql查询解决了这个问题:

        $em = $this->getDoctrine()->getEntityManager();
        $stmt = $em->getConnection()
                   ->prepare("...
             ");
        $stmt->execute();

但我没有从公寓到评论的联系。评论与公寓有关联。