я получил следующее учение запроса в Symfony2:Учение FIND_IN_SET приводит к ошибке: ожидаемый конец строки, у «(»
$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
doctrine extension from beberlei, чтобы иметь возможность использовать его в запросе
Любые идеи, почему это происходит?
Update:
Использование FIND_IN_SET
в SELECT, в качестве псевдонима так:
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 ','
Я не уверен, но я не думаю, что вы можете использовать функции в 'order_by'. Один из способов - создать псевдоним для этого результата, например, SELECT m, FIND_IN_SET (m.range, 'all', 'without_special') как HIDDEN findInSet FROM .... ', а затем использовать этот псевдоним в' order_by' вместо , – qooplmao
Пробовал это, в результате получилось: 'QueryException: [Синтаксическая ошибка] строка 0, col 53: Ошибка: ожидаемая доктрина \ ORM \ Query \ Lexer :: T_CLOSE_PARENTHESIS, got ','' Что не имеет для меня такого смысла, потому что есть закрывающая скобка, но нет запятой. –
Извините, col 56 вместо 53 –