您好我想在教条中添加自定义函数。
我需要添加一个mysql Field 函数,以便按照这里的大小排序: mysql custom order by with mixed data types
并尝试将其添加到Symfony2中:http://symfony.com/fr/doc/current/cookbook/doctrine/custom_dql_functions.html
当我这样做时:
$queryBuilder->addOrderBy("FIELD(size, 'XS', 'S', 'M', 'L', 'XL', 'XXL', 'XXXL'), size, length", 'ASC');
我总是得到错误:
Error: Expected end of string, got '('
知道如何实现它吗?
答案 0 :(得分:1)
您不能在ORDER BY
子句中使用DQL函数。您必须将FIELD()
函数的结果选择到隐藏字段中,并使用该字段对结果进行排序:
SELECT ..., FIELD(size, ...) AS HIDDEN sizeOrder
FROM ...
ORDER BY sizeOrder
sizeOrder
字段不会影响您的结果,因为它甚至不会被水合。