【发布时间】:2017-08-03 17:16:15
【问题描述】:
我正在尝试从我的用户模型中加载一些关系。场景如下:一个用户可以有多个sales,每个销售可以包含多个items。
我在我的模型中设置了以下关系:
用户模型:
// Attach User Sales
public function sales()
{
return $this->hasMany(\App\Models\Sale::class, 'user_id', 'id');
}
销售模式:
// Attach Items
public function items()
{
return $this->hasMany(Item::class, 'sale_id', 'id');
}
我可以通过执行以下操作来访问用户销售额:
Auth::user()->sales
然后我可以遍历这些销售以获取销售中的相应商品,如下所示:
@foreach(Auth::user()->sales as $sale)
{{ dump($sale) }}
{{ dump($sale->items) }}
@endforeach
但是,这给我带来了N+1 问题。
我希望预先加载嵌套的 items 关系以减少查询大小。
非常感谢任何帮助。
【问题讨论】:
-
Auth::user()->sales->with('items')->get()它是如何工作的? (如果这不起作用,请尝试在上一个查询中使用sales()而不是sales。
标签: php laravel laravel-5.4