2016-11-15 14 views
0

パラメータがこのエンティティに含まれている場合、またはエンティティパラメータが空の場合のみ、すべてのEntityを取得したいとします。DoctrineがnullでないArrayCollection

$qb = $this->createQueryBuilder('cc')     
->join('Toblor\Entity\Paramount', 'p') 
->select('p') 
->Where(':company MEMBER OF p.company_activated') 
->setParameter('company ', $company) 

return $qb->getQuery()->getResult(); 

そして、それは素晴らしい仕事をやっている:

私はこれを持っています。しかし、会社がcompany_activedの一部である場合、またはcompany_activatedが空の場合、同じ結果が得られるようになりました。私はそれがこのエラー

Error: Invalid PathExpression. StateFieldPathExpression or SingleValuedAssociationField expected. 

はこのことを行うための簡単な方法があります私の引き金

->Where('(:company MEMBER OF p.company_activated OR p.company_activated IS NULL)') 

を試してみましたか?なぜなら私は多くの分野で実装する必要があるからです。あなた

+0

を試してみましたかどうかを確認? – Veve

+0

はい、しかし、私は(これはかなり大きい)クエリの残りの部分に干渉したくありません。 –

+1

'$ qb-> expr() - > orX'? – Veve

答えて

0

おかげでcompany_activatedManyToManyまたはOneToManyとあなたの関係です。

それはケースだ場合、あなたが追加する必要があります。その後、

->leftJoin('p.company_activated', 'ca') 

あなたの代わりに同じ `WHERE`で2つの混合条件の` orWhere`条件を追加するca IS NULL

関連する問題