2016-10-19 3 views
0

Мне нужно использовать корпуса переключателей, чтобы добавить ограничения на запрос, который мне нужно запустить. Мне нужно работать с пагинацией, я попытался это:Laravel 5.3 преобразовать построитель запросов в 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); 

и я получаю

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

Если я бегу

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

Я получаю

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

почему существует разница между этими двумя подходами ? Мне нужно использовать первый подход, чтобы иметь возможность добавлять ограничения, используя случай переключения, я не могу сделать это с помощью второго подхода. Но с первым подходом я не получаю LengthAwarePaginator, как его исправить, чтобы получить это?

ответ

2

Вы должны переопределить переменные $-альбомы, если хотите, чтобы они были сохранены в этой переменной. Изменить это:

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

To:

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

вы спасли мой день, такой простой misstake :) –

Смежные вопросы