Стремительная загрузка по автоматически сгенерированному аргументу в Laravel

У меня есть этот маршрут вызова:

Route::resource('products', 'ProductController', ['except' => ['show']]);

Так что, если я войду /products/438/edit он вызывает мой метод редактирования на контроллере, это что-то вроде этого:

 public function edit(Product $product){}

где $product это правильно, мой SELECT * FROM products WHERE id = 438

Теперь мой вопрос, что если я хочу загрузить отношение, как цены ()

Я пробовал:

$product = $product->with('prices');

а также

$product = Product::find($product->id)->with('prices')

но без успеха. Спасибо

2 ответа

Решение

Вы можете загрузить отношения в уже существующую модель или коллекцию, используя 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
Другие вопросы по тегам