2017-05-26 4 views
0

私はLaravel 5.4でElastic Searchを使って研究するためにこのpackageを使用しています。セッションで渡された変数で改ページを作成する方法

私はユーザーが検索要件を満たすための画面を持っています。この方法では、どのフィールドが満たされているかを検証しており、ESで検索するクエリを作成します。

public function search(Request $request) 
{ 
    $searchParams = ['vehicle', 'year_min', 'year_max', 'mileage_min', 'mileage_max', 'exchange', 'keyword', 'optionals', 'phone', 'daterange']; 
    $query = ES::type("ads"); 

    foreach($searchParams as $param) { 

     if($request->has($param)) { 

      if($param == 'vehicle') { 
       $results = $query->where("vehicle", "like", $request->vehicle); 
      } 

      if($param == 'keyword') { 
       $results = $query->where("description", "like", $request->keyword); 
      } 

      if($param == 'year_min') { 
       $results = $query->where("year", ">=", intval($request->year_min)); 
      } 

      if($param == 'year_max') { 
       $results = $query->where("year", "<=", intval($request->year_max)); 
      } 

      if($param == 'mileage_min') { 
       $results = $query->where("mileage", ">=", intval($request->mileage_min)); 
      } 

      if($param == 'mileage_max') { 
       $results = $query->where("mileage", "<=", intval($request->mileage_max)); 
      } 

      if($param == 'exchange') { 
       $results = $query->where("exchange", "like", $request->exchange); 
      } 

      if($param == 'optionals') { 
       $results = $query->where("optionals", "like", serialize($request->optionals)); 
      } 

      if($param == 'phone') { 
       $results = $query->where("phone", "exists", true); 
      } 

     } 
    } 

    $all_leads = $results->orderBy("created_at", "desc")->paginate(15); 
    $all_leads->setPath('/dashboard/crawler/resultados'); 

    Session::put('all_leads', $all_leads); 
    return redirect()->action('DashboardAdmin\[email protected]'); 
} 

クエリをマウントした後、結果をレンダリングし、セッションごとに配列を渡す別のメソッドを呼び出しています。

$all_leads = $results->orderBy("created_at", "desc")->paginate(15); 
$all_leads->setPath('/dashboard/crawler/resultados'); 

Session::put('all_leads', $all_leads); 
return redirect()->action('DashboardAdmin\[email protected]'); 

私はセッションで結果を検索してのpaginateがリストに最初のページの結果のみを動作しないビューに送信し、私はページングボタンをクリックした場合、それはURLを変更しますが、レコードを変更しません。 。

public function results() 
{ 
    $all_leads = Session::get('all_leads'); 
    return view('dashboard_admin.prospecting_lead.index', compact('all_leads')); 
} 

答えて

2

resultメソッドでは、結果がキャッシュから取得されているため、ページ設定が機能しません。毎回15の結果が得られます。ページナイザーを動作させるには、クエリ文字列に基づいて結果をフェッチできるように、ページネータを呼び出す必要があります。

関連する問題