次のシナリオがあります。
ユーザーは、他のユーザーをフォローまたはフォローすることができます。
次のコードが示すように、ユーザーは多対多の関係によって関連付けられています
/**
@var ArrayCollection $follows
@ORM\ManyToMany(targetEntity="User", inversedBy="followers")
@ORM\JoinTable(name="user_follows",
joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
inverseJoinColumns={@ORM\JoinColumn(name="followed_user_id", referencedColumnName="id")}
)
*/
protected $follows;
/**
@var ArrayCollection $followers
@ORM\ManyToMany(targetEntity="User", mappedBy="follows")
*/
protected $followers;
現在のユーザーをフォローしているユーザーのID(エンティティ全体ではない)のみfollowersIDs
をオンデマンドで(呼び出し時に)入力する(データベースに永続化されていない)という名前のコレクションフィールドが必要です。$user->getFollowersIDs()
重要なのは、ユーザーの後に大量の他のユーザーが続く可能性があることです。簡単なチェックのためにIDが必要な場合に、すべてのユーザーエンティティをロードするのは無意味だと思います。このカスタムクエリロジックを定義するカスタムプロキシメソッドを作成できるかどうか、または他のソリューションが存在するかどうか疑問に思います。
アドバイスありがとうございます。