Doctrine "notIN" 查询生成器
Doctrine "notIN" query builder
我正在尝试构建此数据查询
select *
from user
where user.id not in (
select user.id
from user
inner join repo_user
on user.id = repo_user.userId
where repo_user.repoId = $id
)
我参考了答案'where not in' query with doctrine query builder
我的努力
class UserRepository extends EntityRepository
{
public function excludeUser($id)
{
$q1 = $this->createQueryBuilder('u')
->select('u.id')
->innerJoin('SvnAdminBundle:RepoUser', 'ru', 'WITH', "ru.userid = u.id")
->where("ru.repoid = $id")
->getQuery()
->getResult();
$qb = $this->createQueryBuilder('r');
$result = $qb->where($qb->expr()->notIn('r.id', $q1))
->getQuery()
->getResult();
return $result;
}
}
我收到错误消息
Notice: Array to string conversion
你应该给一个字符串作为notIn的第二个参数,现在你传递的结果是一个数组,不要用第一个查询获取结果。使用
$q1 = $this->createQueryBuilder('u')
->select('u.id')
->innerJoin('SvnAdminBundle:RepoUser', 'ru', 'WITH', "ru.userid = u.id")
->where("ru.repoid = $id")
->getDQL();
我正在尝试构建此数据查询
select *
from user
where user.id not in (
select user.id
from user
inner join repo_user
on user.id = repo_user.userId
where repo_user.repoId = $id
)
我参考了答案'where not in' query with doctrine query builder
我的努力
class UserRepository extends EntityRepository
{
public function excludeUser($id)
{
$q1 = $this->createQueryBuilder('u')
->select('u.id')
->innerJoin('SvnAdminBundle:RepoUser', 'ru', 'WITH', "ru.userid = u.id")
->where("ru.repoid = $id")
->getQuery()
->getResult();
$qb = $this->createQueryBuilder('r');
$result = $qb->where($qb->expr()->notIn('r.id', $q1))
->getQuery()
->getResult();
return $result;
}
}
我收到错误消息
Notice: Array to string conversion
你应该给一个字符串作为notIn的第二个参数,现在你传递的结果是一个数组,不要用第一个查询获取结果。使用
$q1 = $this->createQueryBuilder('u')
->select('u.id')
->innerJoin('SvnAdminBundle:RepoUser', 'ru', 'WITH', "ru.userid = u.id")
->where("ru.repoid = $id")
->getDQL();