1

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 があるようには見えません。

4

1 に答える 1

3

としてマークされている場合、コレクションを初期化しませDoctrine\Common\Collections\Collection::slice()ん。EXTRA_LAZY

于 2013-02-14T00:11:14.567 に答える