【问题标题】:Symfony Doctrine if statement in querybuilder查询构建器中的 Symfony Doctrine if 语句
【发布时间】:2017-09-06 09:56:26
【问题描述】:

是否可以在学说查询生成器中插入 IF 语句?例如:我有 UserGroup 具有 OneToMany 关系的实体。组有布尔字段hidden。如果Group 所有者不是当前用户,如何创建查询生成器来选择hidden = false 的组。这样只有组所有者才能看到 hidden=true 组。而其他用户只能看到 hidden=false 组

 $qb = $this->createQueryBuilder('group')
        ->where('group.owner = :userId')
        ->setParameter('userId', $user->getId())
        ->orderBy('group.created', 'DESC');

【问题讨论】:

    标签: php mysql symfony doctrine-orm doctrine


    【解决方案1】:

    这应该符合您的需求

    $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');
    

    仅当当前用户是所有者并且组被隐藏时,查询的第一部分才会保留一行。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多