2016-10-19 7 views
0

Ich muss Switch-Fälle verwenden, um Einschränkungen zu der Abfrage hinzuzufügen, die ich ausführen muss. Ich brauche es mit Paginierung zu arbeiten, habe ich versucht, dieses:Laravel 5.3 Conversion-Abfrage-Generator zu LengthAwarePaginator

$albums = Album::with(array(
       'images' => function ($query) { 
        $query->orderBy('order', 'asc'); 
       } 
      )) 
      ->where('votes.votable_type','App\Models\Album') 
      ->groupBy('albums.id'); 
      $albums->published()->orderBy('created_at', 'desc')->paginate(30); 
      dd($albums); 

und ich

Builder {#361 ▼ 
    #query: Builder {#350 ▶} 
    #model: Album {#351 ▶} 
    #eagerLoad: array:2 [▶] 
    #macros: array:5 [▶] 
    #onDelete: Closure {#364 ▶} 
    #passthru: array:11 [▶] 
    #scopes: array:1 [▶] 
    #removedScopes: [] 
} 

Wenn ich

$albums = Album::with(array(
       'images' => function ($query) { 
        $query->orderBy('order', 'asc'); 
       } 
      )) 
      ->where('votes.votable_type','App\Models\Album') 
      ->groupBy('albums.id') 
      ->published()->orderBy('created_at', 'desc')->paginate(30); 
      dd($albums); 

betreibe ich

LengthAwarePaginator {#467 ▼ 
    #total: 97 
    #lastPage: 4 
    #items: Collection {#872 ▶} 
    #perPage: 30 
    #currentPage: 1 
    #path: "http://images.dev" 
    #query: [] 
    #fragment: null 
    #pageName: "page" 
} 

bekommen, warum es gibt einen Unterschied zwischen diesen beiden Ansätzen ? Ich muss den ersten Ansatz verwenden, um Constraints mithilfe von Switch Case hinzufügen zu können, das kann ich nicht mit dem zweiten Ansatz tun. Aber mit der ersten Annäherung bekomme ich LengthAwarePaginator nicht, wie man es repariert, damit ich das bekomme?

Antwort

2

Sie sollten die Variablen $ Alben neu deklarieren, wenn Sie möchten, dass sie in dieser Variablen gespeichert werden. Ändern Sie dies:

$albums->published()->orderBy('created_at', 'desc')->paginate(30); 

An:

$albums = $albums->published()->orderBy('created_at', 'desc')->paginate(30); 
+0

Sie meinen Tag gerettet, wie ein einfaches Misstake :) –