Доктрина ДЕЛА КОГДА - PullRequest
       61

Доктрина ДЕЛА КОГДА

0 голосов
/ 31 октября 2019

Я создаю приложение с 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?

С уважением, Андреас

1 Ответ

1 голос
/ 31 октября 2019

Вы должны использовать WHEN close, расположенный в Doctrine\ORM\Query\AST\WhenClause.

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

...