Где не в запросе с доктриной построителя запросов
Я пытаюсь воспроизвести этот запрос:
SELECT * FROM reserva2 WHERE id_status = 92
AND id_registro_pai IS NULL
AND id_reserva NOT IN (SELECT
id_reserva
FROM
reserva_cancelamento_contato);
Это не работает, что может быть не так?
$qb = $em->createQueryBuilder();
$nots = $qb->select('reserva')
->from('Entities\Reserva2', 'reserva')
$qb->where('reserva.idRegistroPai IS NULL');
$qb->andWhere('reserva.idStatus = 92');
->getQuery()
->getResult();
$linked = $qb->select('rcc')
->from('Entities\ReservaCancelamentoContato,''rc')
->where($qb->expr()->notIn('rc.id_reserva', $nots))
->getQuery()
->getResult();
Я думаю, что я неправильно подключен к QueryBuilder
1 ответ
Вы должны использовать DQL подзапроса вместо результатов и извлечь только идентификатор, например, вы можете изменить подвыбор:
$qb = $em->createQueryBuilder();
$nots = $qb->select('reserva.id') // select only the primary ID
->from('Entities\Reserva2', 'reserva')
$qb->where('reserva.idRegistroPai IS NULL');
$qb->andWhere('reserva.idStatus = 92');
->getQuery()
->getDQL(); // Use the DQL
$linked = $qb->select('rcc')
->from('Entities\ReservaCancelamentoContato,''rc')
->where($qb->expr()->notIn('rc.id_reserva', $nots))
->getQuery()
->getResult();