Laravel 5.2使用分页查询和无分页查询

时间:2017-07-04 01:21:15

标签: laravel-5.2

我正在开发一个带有laravel 5.2的项目。我有一个问题,在我的PostController中,我接受一个参数is_paginated,它是一个整数。如果0,则表示查询所有帖子。如果1,则表示使用分页查询。除了这个参数,我还接受了许多额外的参数,并根据它们的值我决定是否为查询添加约束。例如,用户可以将add_time传递给查询特定日期生成的帖子。所以在我的控制器中,我现在写道:

public function getPosts(Request $request){
 $isPaginated = $request->input('is_paginates');
 if($isPaginated){
  /*
   *According to additional arguments to add query constraints or not, then 
   *use paginate method.
   */
   .....->paginate(10);
 }else{
  /*
   *According to additional arguments to add query constraints or not, then 
   *use get method.
   */
   ......->get();
 }
}

所以你可以看到,我写了add constraints代码两次,如果要添加许多约束,它看起来非常臃肿。那么还有其他方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:0)

您可以在此处使用方法链的奇迹:

var $a = \App\Class::where("c",1);        
if($offset = $request->input("offset")){
    $a = $a->skip($offset);
}
if($limit = $request->input("limit")){
    $a = $a->take($limit);
}
if($request->input("is_paginated")){
    $a = $a->paginate(10);
}
$a_vals = $a->get();