Когда я пытаюсь просмотреть только мягкие удаленные записи в Laravel, onlyTrashed возвращает все записи.
Как вы увидите, у меня также есть поисковая форма, которая немного усложняет. И я думаю, что поисковая форма - причина, по которой это не работает, но я не понимаю, почему именно.
Контроллер:
public function toTrashbin(Request $request) {
$search = '%' . $request->input('search') . '%';
$students = Student::onlyTrashed()
->where('first_name', 'like', $search)
->orWhere('last_name', 'like', $search)
->orWhere('rnumber', 'like', $search)
->paginate(15)
->appends(['search'=> $request->input('search')]);
return view('admin.students.students_trashbin')->with('students', $students);;
}
Просмотр:
{{--searchform--}}
<form method="get" action="/students/trashbin" id="searchForm">
<div class="row">
<div class="col-sm-6 mb-2">
<input type="text" class="form-control" name="search" id="search"
value="{{request()->search}}" placeholder="Search by name or R-number">
</div>
<div class="col-sm-2 mb-2">
<button type="submit" class="btn btn-success btn-block">Search</button>
</div>
</div>
</form>
<hr>
@if (count($students) > 0)
{{--table--}}
<table class="table">
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">R-number</th>
<th scope="col">Deleted at</th>
<th scope="col">Actions</th>
</tr>
</thead>
<tbody>
@foreach ($students as $student)
<tr>
<td>{{$student->first_name}} {{$student->last_name}}</td>
<td>{{$student->rnumber}}</td>
<td>{{$student->deleted_at}}</td>
<td>
<a href="/students/{{$student->id}}/restore">restore</a>
</td>
</tr>
@endforeach
</tbody>
</table>
{{$students->links()}} {{--pagination--}}
@else
<p>No students found using your searchquery.</p>
@endif
Каким-то образом представление отображает всех учащихся, как программно удаленных, так и не программно удаленных.
Однако: Это прекрасно работает, если я удалю 3 "где" в контроллере. Но тогда я не могу использовать поиск, очевидно. Кто-нибудь знает, как я могу сделать эту работу с поиском?
Спасибо.