Я использую Laravel 6 и разрабатываю приложение, используемое исключительно для поиска больших таблиц.
Я сделал разные функции для сортировки по расстоянию (геолокация, заданный адрес или простой выбор зоны), поэтому Пока я делал тесты с Model::all();
, и они отлично работают.
Я добавил поисковый фильтр на мою модель, и он работает.
Дело в том, что я хочу получить результаты в такие данные, как $ FilterResults, а затем использовать различные функции с одинаковыми $ фильтромResults.
Я хочу, чтобы пользователь мог сортировать результаты поиска с помощью различных кнопок / функций.
Как получить результаты поиска, которые представляют собой данные объекта, из представления в контроллер.
Мое представление ( например, при установке только одной кнопки, я не буду беспокоить вас несколькими кнопками для сортировки по расстоянию ):
<!-- FILTER FORM -->
<form method="POST" action="/events/search" class="w-50">
@csrf
<input name="Nom" id="Nom" type="text" class="form-control" placeholder="Nom de l'évènement" />
<input type="text" class="form-control" placeholder="Type d'évènement" id="Type" name="Type" />
<input name="lieu" id="lieu" type="text" placeholder="Lieu de l'évènement" class="form-control" />
<button class="btn btn-outline-secondary" type="submit">Filtrer</button>
</form>
<!-- SORTING METHODS -->
<!-- AROUND ME -->
<!-- BY ADDRESS -->
<!-- BY AREA / ZONE -->
<a class="stpierre" href="/events/St-Pierre">Saint-Pierre</a>
<!-- TABLE DISPLAYING EVENTS -->
<table class="table table-bordered table-striped">
<thead class="text-center thead-dark">
<tr>
<th scope="col">ID</th>
<th scope="col">Nom</th>
<th scope="col">Thématique</th>
<th scope="col">Lieu</th>
<th scope="col">Type</th>
<th scope="col">Programme</th>
<th scope="col">Objectif</th>
</tr>
</thead>
<tbody>
@foreach($events as $produit)
<tr>
<th scope="row">{{ $produit -> idNosEvenements}}</th>
<td>{{ $produit -> Nom}} </td>
<td>{{ $produit -> idThematiques }}</td>
<td>{{ $produit -> lieu }}</td>
<td>{{ $produit -> Type }}</td>
<td class="text-center"> {{ $produit -> Programme }} </td>
<td class="text-center"> {{ $produit -> Objectifs }} </td>
</tr>
@endforeach
</tbody>
</table>
Мои маршруты:
// EVENTS
Route::get('/events', 'MesEventsController@index'); // retrieve all events
Route::post('/events/a-proximite', 'MesEventsController@distGeoLoc'); // sort all events near user
Route::post('/events/search', 'MesEventsController@searchEvents'); // filter search for events
Route::get('/events/{zone}', 'MesEventsController@distZone'); // sort all events by area
Route::get('/test/geocode', 'MesEventsController@distGeocode'); // sort all events by geocoding address
Мой контроллер:
public function index() {
$events = Nosevenement::all();
return view('events', ['events' => $events]);
}
// SORTING METHODS WITH EVENTS:all() FOR TESTING PURPOSES
// SORTING EVENTS BY AREA / ZONE
public function distZone($zone) {
switch($zone) {
case "St-Pierre":
$latitude = -21.3328174;
$longitude = 55.4630668;
break;
case "St-Paul":
$latitude = -21.0140263;
$longitude = 55.2607508;
break;
default:
$latitude = -20.8926767;
$longitude = 55.4827193;
break;
}
$query = Nosevenement::distance($latitude, $longitude);
$asc = $query -> orderBy('distance', 'ASC') -> get();
return view('events', ['events' => $asc], ['zone' => $zone]);
}
Я попытался сериализовать () результаты поиска и поместить их в скрытый затем введите и unserialize () их, но я получил ошибку:
public function distZone($zone, Request $request) {
// dd($zone, $request);
if(!empty($request)) {
$query = unserialize($request);
}
switch ($zone) { etc }
unserialize (): ошибка по смещению 0 из 19097 байт
Так что я думаю, что результаты поиска слишком большой. Возможно, мне интересно получить только результаты поиска $ id?
Я не думаю, что у меня достаточно перспективы на данный момент, если у вас есть идеи, которые будут высоко оценены :)