2017-06-22 12 views
0

LaravelアプリケーションでAJAXリクエストを使用してページ設定データを取得します。これは、最初のチャンクで正常に動作します。ただし、以下の場合、1つの列(id)を渡すだけです。Laravel:最初のチャンクを返すページ分割のみ

何が問題ですか?

関連するコード:

クエリparamsを、後続のページネーション要求に追加されていない。そのため、
Route::get('contacts', function (Request $request) { 
    return buildQuery($request, User::class)->simplePaginate(50); 
}); 

function buildQuery(Request $request, $model) { 
    $query = DB::table('users')->select('id as ID'); 
    $properties = $request->all(); 

    $searchString = ""; 
    if (in_array('q', array_keys($properties)) && $properties['q']) { 
     $searchString = $properties['q']; 
     $query->orWhere('id', 'like', '%'.$searchString.'%'); 
    } 

    foreach ($properties as $property => $value) { 
     if ($property == "id" || $property == "q") 
      continue; 

     if (in_array($property, array_keys($model::$labels))) { 
      $query->addSelect($property.' as '.$model::$labels[$property]); 

      if ($value == "desc" || $value == "asc") 
       $query->orderBy($property, $value); 

      if ($searchString) 
       $query->orWhere($property, 'like', '%'.$searchString.'%'); 
     } 
    } 

    return $query; 
} 

答えて

1

にルート内部のロジックを更新します。BadMethodCallException:

Route::get('contacts', function (Request $request) { 
    return buildQuery($request, User::class)->paginate(50)->appends($request->all()); 
}); 

OR

Route::get('contacts', function (Request $request) { 
     return buildQuery($request, User::class)->simplePaginate(50)->appends($request->all()); 
    }); 
+0

はにつながるメソッドの追加では存在しません。 –

+0

大丈夫、私の悪い。それはLengthAwarePaginatorで動作します。シンプルなページネーションに必要な場合は、クエリから返された結果に追加情報を使用して、そこからリンクを作成します。 – ayip

+0

同じエラーです。オブジェクトの追加が呼び出されるのはAbstractPaginator –

関連する問題