2

IFNULLSQLはSymfony2DoctrineQuery Builderにどのように実装されていますか?私がこのクエリを持っているとしましょう:

select * from ticket order by IFNULL(modified_date, '2000-01-01') DESC, created_date DESC

私はこのDQLを持っています:

$this->qb->select("t, c.name")
         ->from("Ticket", "t");
$this->qb->orderBy("t.modifiedDate", "DESC");
$this->qb->addOrderBy("t.createdDate", "DESC");

では、IFNULL部分を追加する方法は?

4

2 に答える 2

2

さて、いくつかの調査を行ったところ、そのような実装はないことがわかりました。

もう少しグーグルして、この種の欠けている機能を独自の関数としてDoctrineに追加できるようになりました。

GitHubでこの拡張機能を見つけました。これでうまくいくと思います。しかし、Doctrineバージョンとの問題や競合があるのではないかと思います...

于 2012-02-02T09:52:28.193 に答える
1

これは、DQL拡張機能との有効なリンクです

説明された解決策で編集します:

  1. プロジェクトのsrcパスの下に次のディレクトリを作成します:/ src / DoctrineExtensions / Query / MySQL

  2. DQL拡張ファイル(この場合はIfNull.php)をそこに置きます

  3. src / config / packages / doctrine.yamlを編集し、次の新しい行を挿入します。

doctrine:
    ...
    orm:
        ...
        dql:
            numeric_functions:
                IFNULL: App\DoctrineExtensions\Query\Mysql\IfNull

  1. エンティティリポジトリでは、次のようにこの関数を呼び出すことができます。
$qb = $this->createQueryBuilder('tl')
           ->andWhere('IFNULL(tl.app,0) = 1');
于 2021-08-18T06:48:45.283 に答える