学说查询生成器不返回正确的响应加入条件

doctrine query builder not returning right response join with condition

您好,我的查询生成器请求存在逻辑问题,我需要通过用户 ID 获取所有项目的元素,但如果项目是 public(可见性 public),我们将获取所有元素.它很简单,但查询不 return 所有项目。

这是我的存储库代码

public function getAllIdsByUserIdAndProjectIdQueryBuilder($id_user, $id_project)
{
    $qb = $this->createQueryBuilder('element')
            ->select('element.id')
            ->innerJoin('element.project', 'project','with','project.visibility=:visibility')
            ->innerJoin('project.usersShared', 'user')
            ->andWhere('project.id = :id_project')
            ->andWhere('user.id = :id_user')
            ->setParameter(':id_user', $id_user)
            ->setParameter(':id_project', $id_project);
            ->setParameter(':visibility', 'PUBLIC');

    return $qb;
}

我想我得到了它的 orX 条件

 public function getAllIdsByUserIdAndProjectIdQueryBuilder($id_user, $id_project)
{   
    $qb = $this->createQueryBuilder('element')
            ->select('element.id')
            ->innerJoin('element.project', 'project')
            ->leftJoin('project.usersShared', 'user')
            ->andWhere('project.id = :id_workspace');

    $qb->andWhere(
            $qb->expr()->orX(
                    $qb->expr()->eq('user.id', ':id_user'),
                    $qb->expr()->eq('project.visibility', ':public_visibility')
                    )
            )                
            ->setParameter(':id_user', $id_user)
            ->setParameter(':public_visibility', 'PUBLIC')
            ->setParameter(':id_project', $id_project);

    return $qb;
}