Я работаю над проектом электронной коммерции с использованием фреймворка Laravel.У меня есть таблица продуктов, таблица вкусов и таблица flav_product (я считаю, что это называется сводной таблицей).У меня есть модель Product и модель Flavor (из того, что я прочитал, нет необходимости создавать модель для сводной таблицы).
В модели Product я определил следующие отношения:
public function flavors()
{
return $this->belongsToMany('App\Flavor');
}
В модели Flavor я определил следующее соотношение:
public function products()
{
return $this->belongsToMany('App\Product');
}
Теперь в моем контроллере Product я попытался сделать следующее:
$flavors = Product::select('id')->with('flavors')->get();
, который отправляется наприменимое представление (product.blade.php).
В product.blade.php у меня есть следующее:
@foreach ($flavors as $flavor)
<select id="product-flavor" class="bs-select">
<option value="{{ $flavor }}">{{ $flavor }}</option>
</select>
@endforeach
Итак, что дает мне?Ну, это показывает мне следующее:
{"id":1,"flavors":[{"id":1,"name":"Cake Batter","created_at":"2018-05-29 20:12:56","updated_at":"2018-05-29 20:12:56","pivot":{"product_id":1,"flavor_id":1}},{"id":2,"name":"Caramel Coffee","created_at":"2018-05-29 20:48:25","updated_at":"2018-05-29 20:48:25","pivot":{"product_id":1,"flavor_id":2}},{"id":3,"name":"Chocolate Milkshake","created_at":"2018-05-29 20:49:09","updated_at":"2018-05-29 20:49:09","pivot":{"product_id":1,"flavor_id":3}},{"id":4,"name":"Cookies & Cream","created_at":"2018-05-29 20:49:50","updated_at":"2018-05-29 20:49:50","pivot":{"product_id":1,"flavor_id":4}},{"id":5,"name":"Vanilla Milkshake","created_at":"2018-05-29 20:50:16","updated_at":"2018-05-29 20:50:16","pivot":{"product_id":1,"flavor_id":5}}]}
что я определенно не хочу всего этого.Все, что я хочу, это получить название вкусов, связанных с этим продуктом, через сводную таблицу.
Как я могу продолжить?
Редактировать
Следующий кодв ShopController.php (относительно того, как продукт извлекается и отображается):
/**
* Display the specified resource.
*
* @param string $slug
* @return \Illuminate\Http\Response
*/
public function show($slug)
{
$product = Product::where('slug', $slug)->firstOrFail();
$mightAlsoLike = Product::where('slug', '!=', $slug)->mightAlsoLike()->get();
return view('product')->with([
'product' => $product,
'mightAlsoLike' => $mightAlsoLike,
]);
}
Из web.php:
Route::get('/shop/{product}', 'ShopController@show')->name('shop.show');