从 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 中的关系中检索关系的主要内容,如果未能解决你的问题,请参考以下文章