3

Symfony2とDoctrine2を使用して、多くのIFを記述するのではなく、CONCAT_WSをINと組み合わせたいと考えています。

WHERE CONCAT_WS('-', id2, id2) IN ($ids)

このエラーが発生しました:

[Syntax Error] line 0, col 446: Error: Expected Doctrine\\ORM\\Query\\Lexer::T_IN, got '('

$idは「123-456」の形式です。

CONCAT_WSの代わりに単に列を使用すると、次のように機能します。

WHERE id2 IN ($ids)
4

2 に答える 2

3

すべてのMySQL関数がDoctrineで使用できるわけではありません。サポートされているすべてのデータベースに共通する機能のみが使用可能です。

このリンクをたどると、デフォルトで使用可能な関数のリストが表示されますhttp://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#functions-operators-集計

とにかくCONCAT_WSを使用したい場合は、次のリンクでカスタム関数の作成について読んでください。独自のDQLカスタム関数を作成して、以前と同じように使用できるようになります。

http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/cookbook/dql-user-defined-functions.html

http://symfony.com/doc/current/cookbook/doctrine/custom_dql_functions.html

于 2013-02-18T21:26:02.083 に答える
0

私はこれと同じ問題を抱えていました、私はこれを使ってそれを解決しました:

CONCAT(CONCAT('-', id2), id2)

最も洗練されたソリューションではありませんが、機能します。カスタム関数を作成するのが道です。

于 2013-09-19T11:44:26.353 に答える