Symfony2 / Doctrine2 - 如何使用QueryBuilder转换此SQL请求?

时间:2013-02-22 11:30:39

标签: symfony doctrine-orm query-builder

我有一个关系:用户 - > [OneToMany] - >个人资料< - [OneToMany]< - Group

当用户加入群组时,会使用夫妻user_id / group_id创建个人资料。

我希望从用户处获取未加入的群组。

这个SQL请求工作正常,但我想用QueryBuilder翻译它:

对于ID为2的用户

SELECT g.id 
FROM Group g 
WHERE id NOT IN (SELECT group_id FROM Profile WHERE user_id = 2)

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我没有测试它,但我认为这应该有用

    $qb = $this->conn->createQueryBuilder();
    $qb->select('g.id');
    $qb->from('Group', 'g');
    $qb->innerJoin('g', 'Profile', 'p', 'g.id != p.group_id');
    $qb->where('p.group_id = 2);

**编辑 对不起,我没看过未加入的部分。

试试这个

$qb = $this->conn->createQueryBuilder();
$qb->select('g.id');
$qb->from('Group', 'g');
$qb->where($qb->expr()->notin(
       'g.id',
       $qb2->select('p.group_id')
           ->from('Profile', 'p')

           ->getDQL()
));