我正在开发一个带有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
代码两次,如果要添加许多约束,它看起来非常臃肿。那么还有其他方法可以做到这一点吗?
答案 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();