在 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();
我有一个播客应用程序,其中 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();