【发布时间】:2017-10-08 23:33:36
【问题描述】:
我在学说的 where 子句中遇到了 mysql CASE 的问题,
$rides_q1 = $em->getRepository('IRRideBundle:Ride');
$query = $rides_q1->createQueryBuilder('a')
->where('(CASE WHEN a.ephemeral = 1 THEN a.date_beginning < NOW() AND a.date_ending > NOW()ELSE a.ephemeral = 0 END) AND a.active = 1 AND a.status = 5')
->getQuery();
$ridesQuery = $query->execute();
**[Syntax Error] line 0, col 93: Error: Expected Doctrine\ORM\Query\Lexer::T_ELSE, got '<'**
[2/2] QueryException: [Syntax Error] line 0, col 93: Error: Expected Doctrine\ORM\Query\Lexer::T_ELSE, got '<' +
[1/2] QueryException: SELECT a FROM IR\RideBundle\Entity\Ride a WHERE (CASE WHEN ephemeral = 1 THEN date_beginning < NOW() AND date_ending > NOW()ELSE ephemeral = 0 END)
我想准备这个 sql 查询,它可以在 phpmyadmin 中正常工作
SELECT * FROM ride WHERE (CASE WHEN ephemeral = 1 THEN date_beginning < NOW() AND date_ending > NOW()ELSE ephemeral = 0 END) AND active = 1 AND `status_id` = 5 ORDER BY `date_ending` DESC
【问题讨论】:
-
通常你不会在 WHERE 中使用 CASE。使用布尔逻辑
标签: mysql symfony doctrine-orm doctrine symfony-2.8