【发布时间】:2016-05-06 06:07:04
【问题描述】:
我是 symfony 的新手,如果这真的很容易回答,我很抱歉。
为了举例,我重写了代码 sn-ps,就好像我在写博客一样。
我有一个BlogPost 实体,其中包含BlogComments 的集合,注释如下:
/**
* @OneToMany(targetEntity="BlogComment", mappedBy="post")
*/
private $comments;
从我业余的角度来看,Doctrine 喜欢使用完整的对象,所以这个集合要么没有初始化,要么在我使用对它的引用时延迟加载。
我想你可以想象当我的每个BlogPosts 至少有 500 个Blogcomments 并且每当我触摸$comments 变量时它们都会被初始化时的开销和内存需求。
我想要实现的是列出 ie。 50 篇博文,每篇都有 20 个最新的 cmets(没有内存爆炸)。此外,我希望能够仅显示“喜欢”最多的前 20 个 cmets(或者通常仅根据某些标准选择一个子集)。
是否有任何普遍推荐和干净的方法来实现这种功能?当我实现这一点时,是否使用这种“不完整”或“修改”的实体会破坏我的逻辑(当从子集中更新/删除项目并保留它时)?我认为对此的解决方案可能是自定义存储库中的一种方法,但我仍然看不到它背后的想法。
提前谢谢你的回答,我真的很好奇你能想出什么样的解决方案。
【问题讨论】: