2017-06-22 148 views
0

我在Laravel应用程序中通过AJAX请求提取分页数据。这对第一块很有效。但是,对于以下内容,它只传递一列(id)。Laravel:分页只返回第一个块

什么问题?

相关的代码:

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

它,因为查询参数不附加在随后的分页请求。

更新你的逻辑路径里面:

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

引出:BadMethodCallException:方法追加不存在。 –

+0

好的,我的坏。它适用于LengthAwarePaginator。如果您需要它进行简单分页,请使用查询返回的结果的附加值,同时根据查询生成链接。 – ayip

+0

同样的错误。该对象追加被称为AbstractPaginator –