У меня есть два разных запроса, которые я объединяю, чтобы вернуть коллекцию
$combinados = $histMe->merge($hist)->sortByDesc('created_at');
И я возвращаю их так:
$final = $combinados->all();
Но это печатает всю коллекцию, как я могу разбить это на страницы? постраничной () Метод laravel не работает с коллекциями. И как я могу контролировать это с точки зрения?
Спасибо!
Вы можете использовать этот код, который я написал давно:
Вы должны использовать информацию о длине страницы:
use Illuminate\Pagination\LengthAwarePaginator;
public function paginate($items, $perPage,$setDefaultOption = true, $options = [])
{
if($setDefaultOption){
$options = ['path' => request()->url(), 'query' => request()->query()];
}
$page = Input::get('page', 1); // Get the current page or default to 1
$items = $items instanceof Collection ? $items : Collection::make($items);
return new LengthAwarePaginator($items->forPage($page, $perPage), $items->count(), $perPage, $page, $options);
}
API немного изменился в новых версиях. Чтобы разбить коллекцию на страницы, вам нужно использовать forPage.
Метод forPage принимает два параметра:
forPage(int $page, int $perPage)
Таким образом, вы можете сделать что-то вроде этого в вашем контроллере:
...
public function index(Request $request)
{
$combinados = $histMe->merge($hist)->sortByDesc('created_at');
$combinados->forPage($request->get('page'), 25);
}
...