Здесь мы увидим, как реализовать функцию поиска в Laravel. мы будем искать данные в базе данных и отображать результаты поиска в таблице.

Форма поиска:
Во-первых, давайте создадим форму для поля поиска,
<form action="/search" method="POST" role="search">
{{ csrf_field() }}
<div class="input-group">
<input type="text" class="form-control" name="q"
placeholder="Search users"> <span class="input-group-btn">
<button type="submit" class="btn btn-default">
<span class="glyphicon glyphicon-search"></span>
</button>
</span>
</div>
</form>
Действие поиска:
При нажатии кнопки поиска происходит переход к поиску маршрута, в котором присутствует логика выборки данных из базы данных,
Route::any('/search',function(){
$q = Input::get ( 'q' );
$user = User::where('name','LIKE','%'.$q.'%')->orWhere('email','LIKE','%'.$q.'%')->get();
if(count($user) > 0)
return view('welcome')->withDetails($user)->withQuery ( $q );
else return view ('welcome')->withMessage('No Details found. Try to search again !');
});
эта логика ищет в таблице User имя и адрес электронной почты с вводом, который мы предоставляем, здесь мы используем оператор LIKE для поиска данных,
после получения данных данные отправляются в приветственное представление вместе с сообщением, когда результаты поиска не отображаются нашел.
Здесь вся логика записана в самом файле маршрутов, если мы хотим создать контроллер, мы можем это сделать, здесь только одна простая логика, поэтому мы не использовали контроллер.
Результаты поиска :
Приветственный вид для отображения результатов поиска будет выглядеть так:
<div class="container">
@if(isset($details))
<p> The Search results for your query <b> {{ $query }} </b> are :</p>
<h2>Sample User details</h2>
<table class="table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Email</th>
</tr>
</thead>
<tbody>
@foreach($details as $user)
<tr>
<td>{{$user->name}}</td>
<td>{{$user->email}}</td>
</tr>
@endforeach
</tbody>
</table>
@endif
</div>
Файл маршрутов выглядит так:
<?php
use App\User;
use Illuminate\Support\Facades\Input;
Route::get ( '/', function () {
return view ( 'welcome' );
} );
Route::any ( '/search', function () {
$q = Input::get ( 'q' );
$user = User::where ( 'name', 'LIKE', '%' . $q . '%' )->orWhere ( 'email', 'LIKE', '%' . $q . '%' )->get ();
if (count ( $user ) > 0)
return view ( 'welcome' )->withDetails ( $user )->withQuery ( $q );
else
return view ( 'welcome' )->withMessage ( 'No Details found. Try to search again !' );
} );
для разных типов маршрутизации проверьте предыдущий пост о маршрутизации.
Теперь, когда кто-то запрашивает базу данных, мы можем видеть соответствующие результаты.
Посмотрите на скриншоты ниже,
Сообщение: https://justlaravel.com/search-functionality-laravel/
YouTube: https://www.youtube.com/watch?v=RJqHwsr3Jhs
Рабочая демонстрация: https://demos.justlaravel.com/search-functionality-in-laravel
GitHub: https://github.com/avinashn/searchexamplelaravel