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