0

こんにちは、ドクトリンにカスタム関数を追加したいと思っています。

ここのようにサイズで注文できるように 、mysqlフィールド関数を追加する必要があります: mysql custom order by with mixed data types

だから私はこれを例として使用します: https://github.com/beberlei/DoctrineExtensions/blob/master/lib/DoctrineExtensions/Query/Mysql/Field.php

次のように 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 '('

それを実装する方法はありますか?

4

1 に答える 1

1

ORDER BY句内で DQL 関数を使用することはできません。関数の結果を非表示フィールドに選択し、そのFIELD()フィールドを使用して結果を並べ替える必要があります。

 SELECT ..., FIELD(size, ...) AS HIDDEN sizeOrder
 FROM ...
 ORDER BY sizeOrder

sizeOrderフィールドは水和さえしないため、結果には影響しません。

于 2013-07-11T14:35:53.797 に答える