Итак, у меня есть база данных со студентами, и у меня есть имена, имена групп студентов и тому подобное, я хочу создать систему фильтров с несколькими фильтрами, например, я хочу отобразить строку (таблицы ) со студентами по имени Джон и находятся в группе A (должны выполняться оба условия). Но проблема в том, что когда мне нужен фильтр только для студентов, например, мне не нужна определенная группа, мой сценарий не работает, только для двух фильтров, а не только для одного.
Я пробовал это:
в маршруте: Route::post('/search', 'HomeController@search')->name('search');
в HomeController:
public function search(Request $request)
{
$students = Student::query();
$datas = $request->all();
if ($request->has('group')) {
$students = $students->where('group', $request->group);
}
if ($request->has('name')) {
$students = $students->where('name', $request->name);
}
$students = $students->paginate(40);
$data = array (
'students' => $students,
'datas' => $datas,
);
return view('searchStudent')->with($data);
}
А в блейде два простых ввода, кнопка и таблица со студентами.
<div class="col-sm-4">
<div class="search-box grey lighten-3">
<h2>Search Students</h2>
<div class="input-r">
<form action="{{ route('search') }}" method="post">
@csrf
<input name="name" type="text" class="form-control">
<input name="group" type="text" class="form-control">
<button class="btn btn-info btn-block" type="submit">Search</button>
</form>
</div>
</div>
</div>
<div class="col-sm-8">
@foreach ($students as $student)
<div class="row pb-5">
<div class="col-md-4">
<div class="profiel-img">
<img src="{{ asset($student->image) }}" alt="thumbnail" class="img-thumbnail" style="width: 200px">
</div>
<a class="btn btn-primary btn-sm" style="font-size: 12px; margin-left: 40px;" href="{{ route('student.show', $student) }}">Visit Profile</a>
</div>
<div class="col-md-8 pb-3">
<h3 class="black-text"> {{ $student->name }}</h3>
<h3 class="black-text"> {{ $student->group }}</h3>
<hr style="border-top:1px solid #ccc;">
</div>
</div>
@endforeach
{{ $students->appends($datas)->links() }}
</div>
Мне нужно работать только для ввода имени и фильтра, только для группы и для обоих входов. С этим кодом он работает только для обоих (я не могу фильтровать только имя, только группу и т. Д. c.)