Пытаюсь реализовать фильтр по трем параметрам.
View:
{{ Form::open(['route' => ['roll.index', 'method' => 'GET']]) }}
{{ Form::token() }}
<div class="input-group col-md-9">
{{ Form::select('catalog_id', \App\Models\Catalog::pluck('label','id'), null, ['placeholder' => 'Выберите каталог...', 'class' => 'form-control'])}}
{{ Form::select('category_id', \App\Models\RollCategory::pluck('label','id'), null, ['placeholder' => 'Выберите категорию...', 'class' => 'form-control'])}}
{{ Form::select('picture_id', \App\Models\RollPicture::pluck('label','id'), null, ['placeholder' => 'Выберите направление рисунка...', 'class' => 'form-control'])}}
<div class="input-group-append mb-3">
{{ Form::submit('Применить', ['class' => 'btn btn-primary']) }}
</div>
</div>
{{ Form::close() }}
Scope в модели:
public function scopeFilter($query)
{
if(request('catalog_id'))
{
$query->where('catalog_id', request('catalog_id'));
}
if(request('category_id'))
{
$query->where('category_id', request('category_id'));
}
if(request('picture_id'))
{
$query->where('picture_id', request('picture_id'));
}
return $query;
}
Далее я пытаюсь вывести результаты в index, но запрос отправляется как insert
public function index(Request $request)
{
$rolls = RollStorage::with(['catalog', 'category', 'picture'])->filter()->paginate('10');
return view('admin.storage.roll.index', compact('rolls'));
}
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'category_id' cannot be null (SQL: insert into `roll_storages` (`catalog_id`, `category_id`, `picture_id`, `updated_at`, `created_at`) values (1, ?, ?, 2019-10-21 19:15:07, 2019-10-21 19:15:07))
Наверное, нельзя использовать один метод, как тогда сделать иначе и оптимальнее?