[英]doctrine querybuilder syntax error expected =, <, <=, <>, >, >=, !=, got end of string
[英]Doctrine FIND_IN_SET leads to Error: Expected end of string, got '('
我在Symfony2中有以下學說查詢:
$query = $em
->createQuery("
SELECT m FROM MyBackendBundle:Merchant m
WHERE m.active = :active
ORDER BY FIND_IN_SET(m.range, 'all', 'without_special'), m.tradingAmount DESC
")
->setParameter('active', true)
;
但這會導致以下錯誤:
[Syntax Error] line 0, col 112: Error: Expected end of string, got '('
和:
QueryException:
SELECT m FROM My\Bundle\BackendBundle\Entity\Merchant m
WHERE m.active = :active
ORDER BY FIND_IN_SET(m.range, 'all', 'without_special') ASC, m.tradingAmount DESC
我使用FIND_IN_SET
教義擴展名,以便能夠在查詢中使用它。
任何想法為什么會發生這種情況?
更新:
通過以下FIND_IN_SET
在SELECT中將FIND_IN_SET
用作別名:
SELECT m, FIND_IN_SET(m.range, 'all', 'without_special') AS HIDDEN findInSet
FROM MyBackendBundle:Merchant
WHERE m.active = :active
ORDER BY findInSet, m.productAmount DESC
導致以下錯誤:
[Syntax Error] line 0, col 56: Error: Expected Doctrine\ORM\Query\Lexer::T_CLOSE_PARENTHESIS, got ','
感謝@qooplmao的評論,這是有效的版本:
$query = $em
->createQuery("
SELECT m, FIND_IN_SET(m.range, 'all,without_special') AS rangeOrdering
FROM MyBackendBundle:Merchant m
WHERE m.active = :active
ORDER BY rangeOrdering, m.tradingAmount DESC
")
->setParameter('active', true)
;
FIND_IN_SET
僅具有兩個參數,並且必須在查詢的SELECT
部分內,因為不能在查詢的ORDER BY
部分中使用函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.