我有一个单独工作的查询。但是当将它用作子查询时,它以某种方式无法识别别名,而是解析器认为它属于一个类。
解释我试图实现的目标:
例如,我们有一个带房间的酒店(每个房间都是不同的类型),我们只想要包含特定房间类型的酒店。
JOIN 中的 WHERE 可以工作,但这只会加入符合条件的房间。我想要符合条件但仍选择所有房间的酒店。这是您每天的 SQL 解决方案,所以我认为我可能做错了什么..
根查询示例:
$main = $em->createQueryBuilder()
->select('hotels, rooms')
->from('Hotel', 'hotels')
->leftJoin('hotels.Rooms', 'rooms');
子查询:
$sub = $em->createQueryBuilder()
->select('count(rooms.id) as hidden totalRooms')
->from('HotelToRoom', 'rooms')
->andWhere('rooms.hotel_id = hotels.id') // or a dummy ID as a solo query..
->andWhere($qb->expr()->in('rooms.type_id', implode(',', $types)))
->having('totalRooms = ?1')
->setParameter('1', count($types))
;
子查询单独工作正常。但是当我将它添加为子查询时,例如:
$main->andWhere($qb->expr()->exists($sub->getDQL()));
出现以下错误:
Error: Class 'totalRooms' is not defined.'
似乎有部分不再在子查询或其他东西中搜索......?