从 Laravel 中的关系中检索关系

Posted

技术标签:

【中文标题】从 Laravel 中的关系中检索关系【英文标题】:Retrieving relationships from relationships in Laravel 【发布时间】:2020-08-20 14:56:03 【问题描述】:

我有一个使用 Laravel 7 的应用程序。在其中,我有一个“帐户”模型,这个模型有几个“配置文件”,每个“配置文件”有几个“产品”。

如何以最佳方式检索附加到某些“帐户”的所有“产品”。

目前,我加载链接到此“帐户”的所有“配置文件”,然后加载链接到每个“配置文件”的所有“产品”。但是我觉得这不是很优化,并且很难对返回的数据进行排序(按降序排列)。

我确信 Eloquent / Laravel 允许直接恢复它,但我不知道如何。

谢谢你!

【问题讨论】:

您可以设置一对多关系并进行预加载 【参考方案1】:

eloquent 仅针对这种情况具有“Has Many Through”关系, 在您的帐户模型中,您可以编写如下内容:

class Account extends Model

public function products()

return $this->hasManyThrough(Product::class, Profile::class);


现在,您可以获取指定帐户的所有产品,例如:

$myAccountProducts=Account::find($account_id)->products()->get();

你也可以指定外键...

更多细节在:

https://laravel.com/docs/7.x/eloquent-relationships#has-many-through

【讨论】:

【参考方案2】:
Account::with(['profiles','profiles.products'])->get();

【讨论】:

以上是关于从 Laravel 中的关系中检索关系的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.4:无法从关系中检索数据

Laravel Eloquent - 从关系中检索数据

使用 laravel 微风检索登录请求中的关系表

Laravel 5.5 检索嵌套关系中的第一条记录

从laravel中的多对多关系中获取单列

从3个表中检索数据如何使用Laravel中的第一个表从最后一个表中检索数据