2017-09-15 9 views
1

symfony3を使用してdoctrineに多数の関係を持つカテゴリフィルタを実装しています。私には多くの関連があるエンティティBusinessCategoryがあります。多くの関係に多くを持つ新しいテーブルが多対多の関係を持つ複数の条件を持つデータを検索するSql/Doctrineクエリ

business_id category_id 
1    1 
1    2 
2    1 
2    2 
3    1 

以下のようになります。今、私はcategory_id=1 and category_id=2を持っているすべての事業を取得したいです。

ビジネスID 1,2を選択してください。

マイSQLクエリ: -

SELECT * FROM business 
LEFT JOIN business_category ON business_category.business_id=business.id 
WHERE business_category.category_id = 1 AND business_category.category_id = 2 

任意のSQLや教義クエリが動作します。

本当に助けていただきありがとうございます。

+0

あなたは、それぞれのビジネスがカテゴリ1と2の両方に存在しなければならないことを意味しますか? –

+0

はい、@MKhalidJunaidと私はAND操作でそれらのビジネスをフェッチする必要があります。 –

答えて

1

は、次のように両方のカテゴリあなたの書き込みクエリビルダに存在する事業を取得するにはどこで私はあなたのエンティティが適切な多くの

多くの関係に
$repo = $this->getDoctrine()->getRepository('YourBundle:Business'); 

$repo = $this->createQueryBuilder('b') 
    ->addSelect('COUNT(DISTINCT c.id) AS total_categories') 
    ->innerJoin('b.categories', 'c'); 

$categoryIds = array(1,2); 

$repo->add('where', $qb->expr()->in('c', $categoryIds)) 
    ->groupBy('b.id') 
    ->having('total_categories = '.count($categoryIds)) 
    ->getQuery() 
    ->getResult(); 

にマッピングされていると仮定し、複数でデータをフェッチするためにこれを使用します参照のために別の答えを参照してくださいhere

1

あなたは私が多くの関係に多くのプロジェクトやユーザーを持っている

 $qb->select('p') 
     ->from('AppBundle:Project', 'p') 
     ->innerJoin('p.users', 'u') 
     ->where('u.id=:userIdDaily') 
     ->andWhere('u.id=:UserID') 
     ->setParameter('userIdDaily', $UserObj) 
     ->setParameter('UserID', $UserObj->getId()) 
    ; 
    $query = $qb->getQuery(); 
    $results = $query->getResult(); 

を試すことができます。句

+0

私はすでに同じことを試みましたが、私のために働いていません。 –

+0

結果はどのように表示されますか? –

関連する問題