1

假设我在 Doctrine 中有一个名为 Post 的实体,它与另一个名为 Comment 的实体具有双向多对一关系。

假设我在 Post 中有一个函数将帖子序列化为 JSON 并包含部分评论:

public function serialize(){
   return array(
          ... other data here ....
          'comments' => $this->getSerializedComments(5),
          'total_comments' => $this->getComments()->count()
   );
}

我还想编写一个函数 getSerializedComments(limit),它只加载到限制关联中的评论(即不是帖子的所有评论,只有 5 个)。如果我理解正确,如果我将关联设为 EXTRA_LAZY,count() 只会运行一个计数查询,而不是水合整个关联。

我宁愿在我的实体类中完成所有这些,而不必在单独的管理器或存储库函数中完成。

我知道对多对关系有一个 @OrderBy 注释。不过似乎没有@Limit。

4

1 回答 1

3

您可以简单地使用,如果它被标记为Doctrine\Common\Collections\Collection::slice(),它不会初始化集合EXTRA_LAZY

于 2013-02-14T00:11:14.567 回答