Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php querybuilder中的符号规则if语句_Php_Mysql_Symfony_Doctrine Orm_Doctrine - Fatal编程技术网

Php querybuilder中的符号规则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

是否可以在查询生成器中插入IF语句?例如:我有
用户
实体,它们有一对一的关系。组具有隐藏的布尔字段
。如何创建查询生成器,如果
所有者不是当前用户,它将选择
隐藏的组
=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');
只有当前用户是所有者且组隐藏时,查询的第一部分才会保留一行

第二部分将包括所有非隐藏组