2

IFNULLSymfony2 Doctrine Query Builder 中的 SQL是如何实现的?假设我有这个查询:

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 回答