Php querybuilder中的符号规则if语句
是否可以在查询生成器中插入IF语句?例如:我有Php querybuilder中的符号规则if语句,php,mysql,symfony,doctrine-orm,doctrine,Php,Mysql,Symfony,Doctrine Orm,Doctrine,是否可以在查询生成器中插入IF语句?例如:我有用户和组实体,它们有一对一的关系。组具有隐藏的布尔字段。如何创建查询生成器,如果组所有者不是当前用户,它将选择隐藏的组=false。这样,只有组所有者才能看到隐藏=真实的组。其他用户只能看到hidden=false组 $qb = $this->createQueryBuilder('group') ->where('group.owner = :userId') ->setParameter('us
用户
和组
实体,它们有一对一的关系。组具有隐藏的布尔字段。如何创建查询生成器,如果组
所有者不是当前用户,它将选择隐藏的组
=false。这样,只有组所有者才能看到隐藏=真实的组。其他用户只能看到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');
只有当前用户是所有者且组隐藏时,查询的第一部分才会保留一行
第二部分将包括所有非隐藏组