【问题标题】:Doctrine CASE WHEN教义 CASE WHEN
【发布时间】:2019-10-31 09:47:28
【问题描述】:

我正在使用 Symfony 3.4 和 Dcotrine 构建一个应用程序。

以下 SQL 语句在我的数据库中运行良好:

SELECT * FROM `report` 
INNER JOIN report_template ON `template_id` = report_template.id INNER JOIN game ON game.id = `game_id`
WHERE (game.refereeAId='Hoehl Luca,SpVgg Altenerding' or game.refereeBId='Hoehl Luca,SpVgg Altenerding')
AND report.creator_id LIKE (CASE WHEN report.template_id=1 THEN 136 ELSE '%' END)

现在我想要 Doctrine 中的这个声明:

$query = $repository->createQueryBuilder('r');
$query->innerjoin('r.game', 'g')
->innerjoin('r.template', 't')
->innerjoin('r.creator', 'c');

$query->andwhere('g.refereeAId = :refereeName or g.refereeBId = :refereeName')
      ->andWhere('r.approved = :approved')
      ->andWhere('c.id LIKE CASE WHEN r.template = :template THEN :user ELSE \'%\' END')
      ->setParameter('approved', true)
      ->setParameter('refereeName', $refereeID)
      ->setParameter('template', $templates[1])
      ->setParameter('user', $user->getId());

我收到以下错误消息:

Notice: Undefined property: Doctrine\ORM\Query\AST\GeneralCaseExpression::$type

我在 LIKE CASE 块中尝试了这么多组合,但没有任何效果。有人知道如何在 Doctrine 中添加这个块吗?

最好的问候 安德烈亚斯

【问题讨论】:

    标签: php symfony doctrine symfony-3.4 doctrine-query


    【解决方案1】:

    你必须使用WHEN关闭,位于Doctrine\ORM\Query\AST\WhenClause。

    WhenClause ::= "WHEN" ConditionalExpression "THEN" ScalarExpression.

    【讨论】:

      猜你喜欢
      • 2017-01-19
      • 1970-01-01
      • 1970-01-01
      • 2020-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-03
      相关资源
      最近更新 更多