Я строю систему продуктов / категорий CRUD в Laravel. Каждая категория продуктов HasMany и каждый продукт принадлежит к категории.
Теперь в моем индексном файле товара я перечисляю в таблице все товары, показывая их данные и их категорию.
Это Контроллер продукта:
public function index()
{
// $products = Product::all();
$products = Product::orderBy('id')->paginate(15);
return view('product.index', compact('products'));
}
А вот мой вид лезвия:
<div class="row">
<div class="col-3">
<h1>Products List</h1>
</div>
<div class="col-3">
<div class="form-group">
<label for="exampleFormControlSelect1"><h2>Select Category</h2></label>
<select class="form-control" name="product_category" id="exampleFormControlSelect1">
{{-- @foreach ($categoryList as $category) --}}
{{-- <option>{{$category->slug}}</option> --}}
{{-- @endforeach --}}
</select>
</div>
</div>
</div>
</div>
<div class="table-responsive">
<table class="table align-items-center table-hover">
<thead class="thead-light">
<tr>
<th scope="col">Id</th>
<th scope="col">Category</th>
<th scope="col">Name</th>
</tr>
</thead>
<tbody>
@foreach ($products as $product)
<tr>
<td>
<a href="{{ route('product.show', $product->id)}}">{{ $product->id }}</a>
</td>
<td>
@if(!empty($product->category))
{{ $product->category->name }}
@else
{{ 'No Category' }}
@endif
</td>
<td>
<a href="{{ route('product.show', $product->id)}}">{{ $product->name }}</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<hr>
{{ $products->render() }}
</div>
Теперь, когда я прокомментировал выпадающий список, я хочу дать пользователю возможность выбрать одну категорию, чтобы продукты фильтровались в зависимости от выбранной категории. Какова лучшая и самая быстрая реализация для этого? Я проверил Laravel Scopes, но это выглядит довольно сложно. Кроме того, эта функция поиска должна быть установлена в контроллере или в API?
Извините за путаницу, но у меня нет лучшего подхода, который я могу использовать.