本文介绍了Symfony2 / Doctrine2 - 如何使用QueryBuilder转换此SQL请求?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

一个用户加入一个组,用一对user_id / group_id创建一个配置文件。

When a user joins a group, a profile is created with the couple user_id/group_id.

我想从用户那里获取未连接的组。

And I want to get the unjoined groups from a user.

这个SQL请求功能很好,但是我想用QueryBuilder来翻译它:

This SQL request work good, but I want to translate it with QueryBuilder :

对于id为2的用户,

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

感谢您的帮助。

推荐答案

我没有测试,但我认为这应该工作

I didn't test it, but I think this should work

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

**编辑
抱歉,我没有读取未连接的部分。

**editSorry i didn't read the unjoined part.

尝试这个

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

这篇关于Symfony2 / Doctrine2 - 如何使用QueryBuilder转换此SQL请求?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-06 06:34