本文介绍了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请求?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!