是否可以在 Doctrine 查询生成器中插入 IF 语句?例如:我有具有 OneToMany 关系的 User
和 Group
实体。组有 bool 字段隐藏
。如果 Group
所有者不是当前用户,如何创建查询生成器,该查询生成器将选择 hidden
= false 的组。这样只有组所有者才能看到hidden=true组。而其他用户只能看到hidden=false组
$qb = $this->createQueryBuilder('group')
->where('group.owner = :userId')
->setParameter('userId', $user->getId())
->orderBy('group.created', 'DESC');
最佳答案
这应该适合您的需求
$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');
仅当当前用户是所有者并且组隐藏时,查询的第一部分才会保留一行。
第二部分将包括所有非隐藏组。
关于php - 查询生成器中的 Symfony Doctrine if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46072196/