具有别名的Doctrine 2在子查询中失败

时间:2013-10-27 15:22:35

标签: mysql doctrine-orm dql

我有一个可以自行运行的查询。但是当它用作子查询时,它无法识别别名,相反,解析器认为它属于一个类。

解释我想要实现的目标:

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

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

似乎有部分不再在子查询内搜索......?

0 个答案:

没有答案