2014-12-23 12 views
9

Ist es möglich, eine Abfrage Zeichenfolge zu klonen, so dass ich es einmal schreiben kann und Änderungen machen einen langen Weg ohne Zuneigung andere Ergebnisse?Laravel Cloning Query String

$query = DB::table('users') 
     ->where('id', '=', '123'); 

$queryGet = $query; 
$queryPaginate = $query; 
$queryCount = $query; 

if(Input::has('get')) 
    $queryGet = $queryGet->get(); 

if(Input::has('paginate')) 
    $queryPaginate = $queryPaginate->paginate(25); 

if(Input::has('count')) 
    $queryCount = $queryCount->count(DB::raw('Distinct users.*')); 

Da im Moment wird das paginate die erste get() ändern.

Dank

Antwort

3

Mopo922 Antwort ist der richtige Weg, dies auf Laravel tun> = 4.1. In früheren Versionen "klont" die Abfrage jedoch nicht und würde zu unerwarteten Ergebnissen führen, da die Hauptabfrage in einem untergeordneten Objekt Query und nicht in der Mail Builder gespeichert ist.

diesen Fehler zu vermeiden, können Sie verwenden:

$newClone = new \Illuminate\Database\Eloquent\Builder(clone $builder->getQuery()); 

Sie diesen Fehler sehen/beheben Geschichte auf: https://github.com/laravel/framework/issues/1336