Как конфертировать из NOT EXISTS в обычный SQL в DOCTRINE ORM

0

Я совершенно новичок в разработке 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();

Запрос выполняется плавно и возвращает результат. но я не знаю, как добавить "НЕ СУЩЕСТВУЕТ" в приведенный выше код. Нужна помощь в этом.

  • 0
    Осталось присоединиться к бронированию и где ноль?
  • 0
    Извини, не понял, что ты имеешь в виду?
Показать ещё 3 комментария
Теги:
symfony-2.7

1 ответ

0

Я прочитал документацию и нашел решение следующим образом:

$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();

Надеюсь, это решит для других людей

Ещё вопросы

Сообщество Overcoder
Наверх
Меню