0
美好的一天,每个人!学说CASE WHEN与WHERE IN语句
我有以下原则查询检索某些CTI实体:
SELECT s.id
FROM CRM\SpendBundle\Entity\Spend s
WHERE (CASE
WHEN s INSTANCE OF 'CRM\BusinessTripBundle\Entity\BusinessTrip' THEN 'Business Trip'
WHEN s INSTANCE OF 'CRM\ExpenseRequestBundle\Entity\ExpenseRequest' THEN 'Expense Request'
ELSE '' END) IN(:availableSpends)
参数availableSpends只是一个字符串数组:
availableSpends = array('Expense Request')
而且这个查询将引发一个错误:
[Syntax Error] line 0, col 439: Error: Expected =, <, <=, <>, >, >=, !=, got 'IN'
如何使用CASE语句来避免此错误?学说版本2.5.1
你已经尽力了,只是为了测试目的,与QueryBuilder的? '($ qb - > where('c INSTANCE OF:param') - > setParameter('param',$ em-> getClassMetadata('My \ Entity \ Class'))'''qb-> expr() - > in('u.id',array(1,2,3))' – Delphine
也许它缺少你的“CASE结果”的别名? – Delphine
或..在你的“SELECT”中添加一个别名并尝试在这个别名上应用你的“WHERE过滤器”。不知道它是否会工作,我无法测试 – Delphine