在 Laravel 中自动生成参数的预加载
Eager Loading on autogenerated argument in Laravel
我有这条路线电话:
Route::resource('products', 'ProductController', ['except' => ['show']]);
所以如果我输入 /products/438/edit
它会在控制器上调用我的编辑方法,就像这样:
public function edit(Product $product){}
其中 $product
正确地是我的 SELECT * FROM products WHERE id = 438
现在我的问题是,如果我想加载像 prices() 这样的关系怎么办
我试过:
$product = $product->with('prices');
和
$product = Product::find($product->id)->with('prices')
但没有成功。
谢谢
您可以使用 load()
:
将关系加载到已经存在的模型或集合中
$product->load('prices')
当您执行 Product $product
和使用资源控制器时,您只是在注入 Product
模型。因此,将函数更改为:
public function edit(Product $product, $id)
您可以使用 with()
方法预先加载关系:
$productData = $product->where('id', $id)->with('prices')->first();
然后您就可以通过以下方式获取价格:
@foreach ($productData->prices as $price)
{{ $price->sum }}
@endforeach
我有这条路线电话:
Route::resource('products', 'ProductController', ['except' => ['show']]);
所以如果我输入 /products/438/edit
它会在控制器上调用我的编辑方法,就像这样:
public function edit(Product $product){}
其中 $product
正确地是我的 SELECT * FROM products WHERE id = 438
现在我的问题是,如果我想加载像 prices() 这样的关系怎么办
我试过:
$product = $product->with('prices');
和
$product = Product::find($product->id)->with('prices')
但没有成功。 谢谢
您可以使用 load()
:
$product->load('prices')
当您执行 Product $product
和使用资源控制器时,您只是在注入 Product
模型。因此,将函数更改为:
public function edit(Product $product, $id)
您可以使用 with()
方法预先加载关系:
$productData = $product->where('id', $id)->with('prices')->first();
然后您就可以通过以下方式获取价格:
@foreach ($productData->prices as $price)
{{ $price->sum }}
@endforeach