繁体   English   中英

原则“ 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
)

用学问查询生成器引用答案“不在哪里”查询

我的尝试

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;
    }
}

我收到错误消息

注意:数组到字符串的转换

您应该给一个字符串作为notIn的第二个参数,现在您要传递的结果是一个数组,不要在第一个查询中获取结果。 采用

$q1 = $this->createQueryBuilder('u')
                ->select('u.id')
                ->innerJoin('SvnAdminBundle:RepoUser', 'ru', 'WITH', "ru.userid = u.id")
                ->where("ru.repoid = $id")
                ->getDQL();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM