0

私は関係を持っています:ユーザー -> [OneToMany] -> プロファイル <- [OneToMany] <- グループ

ユーザーがグループに参加すると、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)

ご協力いただきありがとうございます。

4

1 に答える 1

0

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

**edit Sorry i didn't read the unjoined part.

Try this

$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()
));
于 2013-02-22T11:40:31.723 に答える