Doctrine に Post というエンティティがあり、Comment という別のエンティティと双方向の多対 1 の関係があるとします。
投稿を JSON にシリアル化し、コメントの一部を含める関数が Post にあるとします。
public function serialize(){
return array(
... other data here ....
'comments' => $this->getSerializedComments(5),
'total_comments' => $this->getComments()->count()
);
}
また、関連付け内のコメントを制限するまでしかロードしない関数 getSerializedComments(limit) も作成したいと思います (つまり、投稿のすべてのコメントではなく、5 つだけです)。私が正しく理解している場合、関連付けを EXTRA_LAZY にすると、count() はカウント クエリのみを実行し、関連付け全体をハイドレートしません。
これらすべてをエンティティ クラスで行うことを希望し、別のマネージャーまたはリポジトリ機能で行う必要はありません。
To-Many 関係に @OrderBy アノテーションがあることは知っています。ただし、@Limit があるようには見えません。