Здесь мы увидим, как реализовать функцию поиска в 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
Функциональность поиска - justLaravel.com
Это живая демонстрация примера функциональности поиска приложения в laravel, которая описана в этом посте. Искать... demos.justlaravel.com
GitHub: https://github.com/avinashn/searchexamplelaravel
avinashn / searchxamplelaravel
searchxamplelaravel - Пример функции поиска в laravel. github.com