sql >> データベース >  >> RDS >> Mysql

多対多の関連付けを持つ複数の条件を持つデータを検索するためのSQL/Doctrineクエリ

    両方のカテゴリに存在するビジネスを取得するには、クエリビルダーを次のように記述します。エンティティは適切な多対多の関係でマッピングされていると思います

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

    参考のために、別の回答を参照してください ここ



    1. テキスト配列に入力と同様の値が含まれている行を検索する

    2. SQL Serverで親テーブル、参照テーブル、外部キー制約の名前と列を取得する方法-SQL Server/TSQLチュートリアルパート71

    3. SQLカウント

    4. MySQLストアドプロシージャを呼び出すときにパケットの順序が正しくないエラー