Я совершенно новичок в разработке Symfony. У меня есть свой обычный SQL, как показано ниже, которые проверяются и возвращают результаты. Но мне нужно перейти на Symfony.
SELECT *
FROM Car c
WHERE c.status NOT IN ('DELETED', 'HIDE')
AND NOT EXISTS (
SELECT NULL
FROM Booking b
WHERE b.periodStart Between '2018-02-06 10:51:30' And '2018-02-06 12:51:30'
AND b.status = 'Normal'
AND b.car_id = c.id
);
Ниже мой код Symfony до сих пор я сделан.
$query = $this->getDoctrine()->getRepository('AppBundle:Car')
->createQueryBuilder('c')
->where("c.status NOT IN (:DELETE , :HIDE )")
->setParameter('DELETE','DELETED')
->setParameter('HIDE','HIDE')
->getQuery()
->getResult();
Запрос выполняется плавно и возвращает результат. но я не знаю, как добавить "НЕ СУЩЕСТВУЕТ" в приведенный выше код. Нужна помощь в этом.
Я прочитал документацию и нашел решение следующим образом:
$em = $this->getDoctrine()->getManager();
$query = $em ->createQuery(
'SELECT c from AppBundle:Car c
WHERE c.status NOT IN (\'DELETED\', \'HIDE\')
AND NOT EXISTS (
SELECT b
FROM AppBundle:Booking b
WHERE b.periodStart Between :periodStart And :periodEnd
AND b.status = \'Normal\'
AND b.car = c.id )')
->setParameter ('periodStart', $currentDateTime)
->setParameter ('periodEnd', $nextTwoHourDateTime);
$result =$query -> getResult();
Надеюсь, это решит для других людей