是否可以在doctrine查询构建器中插入IF语句?例如:我有User
和Group
个实体与OneToMany关系。组具有布尔字段hidden
。如果hidden
所有者不是当前用户,如何创建将选择Group
= false的组的查询构建器。这样只有组所有者才能看到hidden = true组。和其他用户只能看到hidden = false groups
$qb = $this->createQueryBuilder('group')
->where('group.owner = :userId')
->setParameter('userId', $user->getId())
->orderBy('group.created', 'DESC');
答案 0 :(得分:2)
这应该符合您的需求
$qb = $this->createQueryBuilder('group');
$qb
->where(
$qb->expr()->andX(
$qb->expr()->eq('group.owner', ':userId'),
$qb->expr()->eq('group.hidden', true)
)
)
->orWhere($qb->expr()->eq('group.hidden', false))
->setParameter('userId', $user->getId())
->orderBy('group.created', 'DESC');
只有当前用户是所有者且隐藏了组时,查询的第一部分才会保留一行。
第二部分将包括所有非隐藏组。