我有一个可以自行运行的查询。但是当它用作子查询时,它无法识别别名,相反,解析器认为它属于一个类。
解释我想要实现的目标:
让我们说例如我们有一个带房间的酒店(每个房间都是不同的类型),我们只想要包含特定房型的酒店。
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.'
似乎有部分不再在子查询内搜索......?