0
좋은 하루 되세요!Doctrine WHERE IN 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으로, 단지 테스트 목적을 위해, 시도 적이 있습니까? $ param ', $ em-> getClassMetadata ('My \ Entity \ Class '))'및 $ qb-> expr() -> ('u.id', array (1, 2, 3)) ' – Delphine
"CASE 결과"의 별칭이 누락 되었습니까? – Delphine
또는 "별명이있는"SELECT "에"CASE result "를 추가하십시오. 이 별칭에 "WHERE 필터"를 적용 해보십시오. 작동하는지 확실하지 않으면 테스트 할 수 없습니다. – Delphine