他のオブジェクトと複数の多対多の関係を持つエンティティを持つアプリケーションを作成しています。エンティティをレイアウトします。
- エントリー=メインオブジェクト
- Region = 「_entry_region」参照テーブルを介した Entry による多対多
- Type = 「_entry_type」参照テーブルを介した Entry による多対多
- Tag = 「_entry_tag」参照テーブルを介した Entry による多対多
フロントエンドで、ユーザーはロードする必要があるエントリに対していくつかのフィルタを設定できます。人間の言葉では、クエリはこのようにする必要があります。
Get the entries WHERE region is (1 or 2 or 3) AND type is ( 3 or 4 or 5 ) AND tag is ( 4 OR 6 or 1)
私は現在、このコードに苦労しています:
$query = $this->em->createQuery('SELECT m.id FROM Entity\Entry e WHERE :region_id MEMBER OF e.regions);
$query->setParameter('region_id', 1);
$ids = $query->getResult();
これにより、対応する地域のエントリの ID が得られます。ただし、setParameter() でリージョン ID の配列を追加することはできません。また、ドキュメントには、人間ベースのクエリのような複数の関連エンティティでこれを行う方法が見つかりません。
Get the entries WHERE region is (1 or 2 or 3) AND type is ( 3 or 4 or 5 ) AND tag is (