Laravel Таблица нескольких фильтров с несколькими коллекциями - PullRequest
1 голос
/ 30 мая 2020

Я пытаюсь создать функцию множественного фильтра для фильтрации моей таблицы. У меня есть модель под названием Product, и в ней есть коллекции с названиями категорий, цветов и размеров. На мой взгляд, следующее:

                <div class="col-6">
                    <div class="form-group mt-3">
                        <label>{{ __('Categories') }}</label>
                        <select class="form-control" id="select-categories">
                            <option value="0">All</option>
                            @foreach($categories as $category)
                            <option value="{{ $category->id }}">{{ $category->name }}</option>
                            @endforeach
                        </select>
                    </div>
                </div>
                <div class="col-6">
                    <div class="form-group mt-3">
                        <label>{{ __('Colors') }}</label>
                        <select class="form-control" id="select-colors">
                            <option value="0">All</option>
                            @foreach($colors as $color)
                            <option value="{{ $color->id }}">{{ $color->name }}</option>
                            @endforeach
                        </select>
                    </div>
                </div>
                <div class="col-6">
                    <div class="form-group mt-3">
                        <label>{{ __('Sizes') }}</label>
                        <select class="form-control" id="select-sizes">
                            <option value="0">All</option>
                            @foreach($sizes as $size)
                            <option value="{{ $size->id }}">{{ $size->name }}</option>
                            @endforeach
                        </select>
                    </div>
                </div>

И затем я использую JQuery, чтобы отправить запрос AJAX моему контроллеру с текущими значениями выбранных опций всех трех раскрывающихся списков.

Примеры данных: Категории: Все цвета: Красный Размеры: Маленький

Теперь я хочу sh, чтобы показать продукты красного цвета и маленького размера, но категория не имеет значения. Я получаю коллекции с использованием отношений один-ко-многим и таблиц ссылок.

$product->categories
$product->colors
$product->sizes

Я не знаю, как к этому подойти.

1 Ответ

0 голосов
/ 30 мая 2020

Вы можете сделать что-то подобное ниже:

public function index(ProductRequest $request) 
{
   $query = Product::where($request->validated());

   return ProductResource::collection($query);
}

и в вашем ProductRequest вы можете определить фильтры, которые вы хотите разрешить

class ProductRequest extends FormRequest
{
   ...
   public function rules()
   {
      return [
         'categories' => 'exists:categories,id'
         ....
      ];
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...