Я хочу использовать построитель запросов доктрины, но не могу найти способ включить оператор CASE WHEN, поскольку помощник не существует.
Это запрос, который я хочу "перевести":
SELECT u.id, u.first_name, u.last_name, u.email, u.role,
CASE WHEN pl.created_by_id IS NULL && pl.updated_by_id IS NULL && po.created_by_id IS NULL && po.updated_by_id IS NULL THEN 'active'
ELSE 'has content'
END AS 'status'
FROM user u
LEFT JOIN planning pl on u.id = pl.created_by_id or u.id = pl.updated_by_id
LEFT JOIN post po on u.id = po.created_by_id or u.id = po.updated_by_id
WHERE u.password_change_required = false
GROUP BY u.id
ORDER BY u.id
Я пробовал это:
$qb = $this->createQueryBuilder('u')
->addSelect('case when pl.created_by_id is null and pl.updated_by_id is null and po.created_by_id is null and po.updated_by_id is null then active else has content end as status')
->leftJoin('App\Entity\Planning', 'pl', 'WITH', 'u.id=pl.createdBy or u.id=pl.updatedBy')
->leftJoin('App\Entity\Post', 'po', 'WITH', 'u.id=po.createdBy or u.id=po.updatedBy')
->where('u.passwordChangeRequired = false')
->groupBy('u')
->orderBy('u.id')
;
, но оно определенно не работает