2017-01-18 9 views
0

私はクエリをDQLに変換しようとしているか、またはクエリビルダーでirをビルドしようとしています。 私は次のクエリで成功を収めてデータベースから結果をretriveことができます。NOT IN句とQueryBuilderで左結合

SELECT * FROM flag 
left join countries 
on flag.id = countries.flag 
where countries.flag IS NULL 

今、私はDQLにこれをCONVERかqueryBuilderでそれを構築する必要があります。 私のエンティティは国と国旗です。外部IDとしてのフィールドフラグとしてのエンティティの国。利用できる$の私のダンプが何も返さdoes notの

$qb = $em->createQueryBuilder(); 
    $available = 
     $qb 
     ->select('f') 
     ->from('Flag', 'f') 
     ->leftJoin('Countries', 'c', 'ON', 'c.flag = f.id') 
     ->where('f.id IS NULL'); 

はこれまでのところ、私は次のコードを得ました。 このQueryBuilderには何がありますか?

ありがとうございました。

答えて

1

あなたはまた、実際にクエリを実行する必要があります:あなたに結果を与える必要があります

$result = $qb->getQuery()->execute(); 

1
where('f.id IS NULL'); 

が間違っています。

それは助けを

where('c.flag IS NULL'); 
0

感謝しなければなりません。

どちらの回答も正しいです。誰か他の人が検索する場合に備えて、最終的なコードを入手します。 また、私は 'ON'を 'WITH'と置き換えなければなりませんでした。

$available = 
     $qb 
     ->select('f') 
     ->from('Flag', 'f') 
     ->leftJoin('Countries', 'c', 'WITH', 'c.flag = f.id') 
     ->where('c.flag IS NULL'); 
    $flags = $qb->getQuery()->execute();