我是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
);
下面是我到目前为止我完成的同志代码。
$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();
希望它能解决其他人