小编Jos*_*ton的帖子

渴望在 Auth::user() 外观上加载嵌套关系

我正在尝试从我的用户模型中加载一些关系。场景如下:一个用户可以有多个sales,每个销售可以包含多个items

我在我的模型中设置了以下关系:

用户模型:

// Attach User Sales
public function sales()
{
    return $this->hasMany(\App\Models\Sale::class, 'user_id', 'id');
}
Run Code Online (Sandbox Code Playgroud)

销售型号:

// Attach Items
public function items()
{
    return $this->hasMany(Item::class, 'sale_id', 'id');
}
Run Code Online (Sandbox Code Playgroud)

我可以通过执行以下操作来访问用户销售:

Auth::user()->sales
Run Code Online (Sandbox Code Playgroud)

然后我可以遍历这些销售以获取销售中的相应商品,如下所示:

@foreach(Auth::user()->sales as $sale)
    {{ dump($sale) }}
    {{ dump($sale->items) }}
@endforeach
Run Code Online (Sandbox Code Playgroud)

然而,这给我带来了N+1问题。

我希望急切加载嵌套items关系以减少查询大小。

任何帮助深表感谢。

php laravel laravel-5.4

6
推荐指数
1
解决办法
2569
查看次数

标签 统计

laravel ×1

laravel-5.4 ×1

php ×1