Doctrine 2 limit IN подзапрос
я пытаюсь использовать подзапрос в операторе IN в Doctrine2.
Вот's как должен выглядеть необработанный SQL-запрос:
SELECT * FROM license
WHERE id
IN (SELECT id
FROM license
WHERE subscription = x
ORDER BY date DESC
LIMIT 5)
ORDER BY name ASC;
Я хочу отобразить 5 последних результатов, упорядоченных по имени, поэтому мне нужно сначала запросить последние 5 результатов, а затем упорядочить по имени в основном запросе.
Проблема в том, что я могуКажется, ОГРАНИЧИВАЕТ внутренний запрос.
Вот'мой текущий код:
$qb = $this->createQueryBuilder('l');
$qb->select('l.id');
$qb = $this->whereSubscriptionId($qb, $subscription_id);
$qb = $this->offsetLimitOrder($qb, 0, 5, 'deliveryDatetime desc');
//Second Query, adds the "order by X"
$qb2 = $this->createQueryBuilder('l2');
$qb2->add('where', $qb2->expr()->in('l2.id', $qb->getQuery()->getDQL()));
if(isset($order)){
$order = explode(' ', $order);
$qb2->addOrderBy('l2.'.$order[0], $order[1]);
}
return $qb2->getQuery()
->getResult();
Как видите, я создаю свой первый запрос, заказываю и ограничиваю его (с помощью специального метода), а затем пытаюсь использовать его во втором запросе.
Тем не менее, кажется, что LIMIT не является частью оператора DQL, потому что, когда я var_dump первый запрос 's DQL, LIMIT отсутствует, что означает, чтоs полностью игнорируется, когда я запускаю $ qb2->GetQuery () ->GetResult ();
Я заставил его работать, запустив первый запрос и вручную введя результаты во второй, но этоужасно
Есть идеи, как это сделать правильно?
Спасибо !