0

我有一个单独工作的查询。但是当将它用作子查询时,它以某种方式无法识别别名,而是解析器认为它属于一个类。

解释我试图实现的目标:

例如,我们有一个带房间的酒店(每个房间都是不同的类型),我们只想要包含特定房间类型的酒店。

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.'

似乎有部分不再在子查询或其他东西中搜索......?

4

0 回答 0