假设以下结构数据库结构 - 一个类别有许多文章,一篇文章有很多注释:
Category:
- id
Article:
- id
- category_id
Comment:
- id
- created_at
- article_id
使用教义,什么是最佳/标准方法:
- 获取 10 篇文章并急切加载每篇文章的最新评论
- 获取 10个类别并急切加载每个类别中的最新评论
通过 Laravel 中的比较,我可以在类别实体上设置一个关系,以便在文章中有一个评论,并按创建日期对其进行排序。但是,我不知道如何通过教义或DQL实现这一目标。
恐怕没有"标准方法"可以承受急切的负载。我的意思是无法使用一些配置/注释来设置它。
我会通过以下方式做到这一点:
- 创建注释存储库类
- 在其中创建
getMostRecentCommentsForCategories(array $categories)
和getMostRecentCommentsForArticles(array $articles)
方法 - 他们可以返回按类别/文章 ID 分组的评论数组
对于排序,您可以使用@OrderBy
注释,例如
/**
* @var RiskMitigation[]|ArrayCollection
* @ORMOneToMany(targetEntity="AppEntityRiskMitigation", mappedBy="risk")
* @ORMOrderBy({"effectiveDate" : "ASC"})
*/
private $mitigations;
但是,使用注释无法快速加载 10 个最新文件。