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();