Doctrine 2 の関連マッピング
<?php
class User
{
//...
/**
* @ManyToMany(targetEntity="Group")
* @JoinTable(name="User_Group",
* joinColumns={@JoinColumn(name="User_id", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="Group_id", referencedColumnName="id")}
* )
*/
private $groups;
//...
}
テストでは、この例で $groups がコンストラクターで ArrayCollection() として初期化されていると仮定すると、ユーザーに関連付けられたすべてのグループが返されます。
私の開発チームのプログラマーが、このシナリオについて良い点を指摘してくれました。ユーザーエンティティに関連付けられたすべてのグループをロードしますが、すべてが必要なわけではありません。
DQL 結合ステートメントを実行するとき、DQL 結合によって達成可能なお気に入りのグループを選択したいとします。ユーザー、グループ、およびお気に入りに参加します。Doctrine はすべてのグループを再度クエリしますか? これは私が指摘しようとしているオーバーヘッドです。すべてのグループの配列コレクションが既に存在します。
アソシエーション マッピングの結果をどのように制御しますか? または、関連付けマッピングを削除した場合でも、DQL を使用して、関連付けマッピングが設定されていないエンティティを結合できますか? または、Doctrine は実際に DQL の関連付けマッピングからのデータを使用しますか?