同様の質問が存在しますが、サイレント結合テーブルの問題について言及しているものはありませんでした。
結合を含む単純な SQL クエリがありますが、この結合テーブルが原因で DQL に変換できません。ManyToMany アソシエーションによってリンクされたShop と Clientの2 つのエンティティがあります。
Doctrine2 は静かに結合テーブルを作成しました: shop_client
.
今、特定のショップに属していないすべてのクライアントを取得したい場合は、次のようにします。
SELECT c.name FROM `client` AS c
JOIN `shop_client` AS sc
ON sc.client_id = c.id
AND sc.shop_id != :shop_id
これは簡単で、本当に簡単ですが、DQL バージョンを思いつくことができません。
「EXISTS」、「NOT IN」、「SIZE」を使用しようとしましたが、DQL クエリが機能することはありませんでした。
編集: My Shop エンティティにはclients
フィールドがありますが、Client エンティティにはshops
フィールドがありません。