Итак, цель моего 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');
Всегда жалуется на то, что Отзыв не был идентифицирован ранее:
[Семантическая ошибка] строка 0, столбец 116 рядом с 'rev WITH r.apartment': Ошибка:
Проверка переменных идентификации использовалась в выражении пути соединения, но была
не определено ранее.
Я много пробовал, и, похоже, ничто не помогло.