2017-07-04 3 views
0

Ich entwickle ein Projekt mit Laravel 5.2. Ich habe ein Problem, in meinem PostController akzeptiere ich ein Argument is_paginated, es ist eine ganze Zahl. Wenn 0, bedeutet dies Abfrage aller Beiträge. Wenn 1, bedeutet dies Paginierungsabfrage verwenden. Neben diesem Argument akzeptiere ich auch viele zusätzliche Argumente, und abhängig von ihrem Wert ermittele ich Add-Constraints zur Abfrage oder nicht. Beispielsweise können Benutzer add_time übergeben, um an bestimmten Tagen generierte Posts abzufragen. Also in meinem Controller, ich schreibe jetzt:Laravel 5.2 benutze sowohl paginate als auch keine paginate Abfrage

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

So können Sie sehen, ich schrieb add constraints Code zweimal, und wenn es viele Einschränkungen sind hinzufügen, es sieht sehr aufgebläht. Gibt es andere Möglichkeiten, dies zu tun?

+0

Sie einen Tippfehler haben auf '$ request-> Eingang ('is_paginates');' –

Antwort

0

Sie können die Wunder der Methode hier Verkettungs verwenden:

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