在 Laravel 中选择多个关系

Selecting over multiple relations in Laravel

我有一个播客应用程序,其中 Podcast 个对象被放在 List 中。在一个 List 中可以有多个 Podcast 对象,一个 Podcast 可以是多个 List 的成员。 (n:m 关系)。

除此之外,List 对象被分组在 Group 中,也许是流派。一个 List 可以包含在多个 Group 中,一个 Group 可以包含多个 List

所有必要的 hasMany 方法都已实现,基本上工作正常。

我想编写一个 Laravel 查询(当前使用 php artisan tinker),其中 returns 所有 Group 及其 List 以及所有Podcast秒每 List。我知道我可以在一个多步骤过程中完成,但我想避免 N+1 问题并一次性获取所有信息。

稍后,我将映射生成的集合并通过 Group 处理 Group,在每个 Group 然后 List 通过 List 和对于每个 List,我将显示 Podcast 个信息。

通过一次查询获取所有这些信息是个好主意吗? (如果是这样,这怎么能做到?)如果不是,是否有经验法则何时使用 eager loading 以及何时接受 N+1 问题?

我是 Laravel 的新手,还不知道何时使用哪种技术...

对于预加载多个关系,您可以使用“点”语法。

Group::with('lists.podcasts')->get();