如何从视图到控制器检索搜索结果数据对象

问题描述 投票:0回答:1

我正在使用Laravel 6,并且正在开发一个仅用于搜索大表的应用程序。

我通过距离(地理位置,给定地址或简单的区域选择)进行了排序的不同功能,到目前为止,我使用Model::all();进行了测试,它们工作正常。

我在模型上添加了搜索过滤器,并且可以使用。

事实是:我想在$ filteredResults之类的数据中检索结果,然后对相同的$ filteredResults使用不同的函数。

我希望用户能够通过不同的按钮/功能对搜索结果进行排序。

如何从视图到控制器检索作为对象数据的搜索结果。

我的观点(例如,只用一个按钮,我不会用几个按钮来进行距离排序

<!-- 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]);
}

我试图对搜索结果进行序列化(),并将其放入隐藏的输入中,然后检索并反序列化(),但出现错误:

public function distZone($zone, Request $request) {
    // dd($zone, $request);
    if(!empty($request)) {
        $query = unserialize($request);
    }
    switch ($zone) { etc }

unserialize():在偏移量0为19097字节时发生错误

所以我认为搜索结果太大。 我也许想知道只检索搜索结果$ id吗?

如果您有任何想法,将不胜感激,目前我对此尚无足够的见解:)

php ajax laravel object search
1个回答
0
投票

您可以通过提供代码示例来更精确地描述情况吗?

© www.soinside.com 2019 - 2024. All rights reserved.