У меня есть запрос следующего вида:
$asins = $asinRepository->createQueryBuilder('asin')
->setParameter('master', $user->getId())
->addSelect('asin.isInWork AND asin.master = :master AS HIDDEN isInWorkSelf')
->addOrderBy('isInWorkSelf', 'desc')
->getQuery()
->getResult();
Во время выполнения он выдаёт ошибку:
[Syntax Error] line 0, col 27: Error: Expected Doctrine\ORM\Query\Lexer::T_FROM, got 'AND'
Вот такой запрос генерирует PHP:
SELECT
asin,
asin.isInWork AND asin.master = :master AS HIDDEN isInWorkSelf
FROM App\Entity\Asin asin
ORDER BY isInWorkSelf desc
Я так понимаю DQL не умеет добавлять вычисляемое поле если в нём встречаются логические операторы?
Сейчас я нашёл такое решение этой проблемы:
->addSelect('CASE WHEN asin.master = :master THEN asin.isInWork ELSE 0 END AS HIDDEN isInWorkSelf')
Но это выглядит как костыль.
Есть ли способ заставить Doctrine ORM правильно реагировать на логические операторы в вычисляемых полях?