学说查询生成器不返回正确的响应加入条件
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;
}
您好,我的查询生成器请求存在逻辑问题,我需要通过用户 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;
}