2017-07-04 27 views
0

我正在開發一個帶有laravel 5.2的項目。我有一個問題,在我的PostController中,我接受一個參數is_paginated,它是一個整數。如果0,則表示查詢所有帖子。如果1,則表示使用分頁查詢。除了這個論點之外,我還接受許多額外的參數,根據它們的值,我確定添加約束來查詢與否。例如,用戶可以通過add_time來查詢在特定日期生成的帖子。所以在我的控制,我現在寫的:Laravel 5.2同時使用分頁查詢和沒有分頁查詢

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

你有'$請求 - >輸入( 'is_paginates')一個錯字;' –

回答

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();