php - 查询生成器中的 Symfony Doctrine if 语句

标签 php mysql symfony doctrine-orm doctrine

是否可以在 Doctrine 查询生成器中插入 IF 语句?例如:我有具有 OneToMany 关系的 UserGroup 实体。组有 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/

相关文章:

php - 为什么我必须使用 POST 而不是 GET?

php - Yii2 注销管理部分无法正常工作

sql - 公交时刻表数据库设计

php - 我可以在使用预加载时运行多个 Symfony 应用程序吗?

php - 如何获取Symfony2应用程序的根目录?

php - 如果我在 SimpleTest 测试用例中使用函数的返回值,Apache 会崩溃

php - 自动完成功能不适用于 mysql

php - 分析和优化 PHP/MySQL 网站

mysql - 在保存到数据库之前将日期数据转换为正确的日期时间格式?

forms - Symfony 2自定义表单字段类型:如何仅一次添加JavaScript和CSS?