Laravel Custom Pagination

Возникают проблемы с настройкой нумерации страниц в Laravel 5.2. Я использую foreach для генерации списка объектов, каждый из которых имеет определенный рейтинг. (соревнование)

Первый запрос, который я использовал, был таким:

$goedeDoelen = GoedDoel::orderBy('punten', 'desc')->simplePaginate(5);

Это работало довольно хорошо, единственная проблема состояла в том, что мой рейтинг сбрасывал все, что я перешел на другую страницу.

Пример: Страница 1 имеет объекты с рангом 1 — 5, страница 2 должна иметь ранг 6-10. Используя первый метод Paginate, вторая страница будет иметь объекты, начиная с 1 снова.

Я попытался обойти это, добавив рейтинг в качестве дополнительного атрибута в мои коллекции Eloquent.

    $ranking = GoedDoel::orderBy('punten', 'desc')->get();
foreach($ranking as $key => $item) {
$item->ranking = $key+1;
}

После этого я попытался использовать -> simplePaginate () в моей обновленной коллекции. Это дало ошибку.

Я создал пользовательский Paginator.

$goedeDoelen = new Paginator($ranking, 5);

Это не работает, как задумано. Когда я перехожу на мою вторую страницу, URL портится и переходит в другое представление.

Как я могу убедиться, что Paginator знает мой текущий URL-адрес, к которому он должен применить? Page = 2

2

Решение

Вам нужно использовать постраничной () метод.

$goedeDoelen = GoedDoel::orderBy('punten', 'desc')->paginate(5);

{!! $goedeDoelen->links() !!}
0

Другие решения

Следующий код иллюстрирует ручную нумерацию страниц в Laravel

Образец контроллера

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Pagination\LengthAwarePaginator as Paginator;

use App\Models\UserRechargeDetails;

class PaginateController extends Controller
{
//
public function index(Request $request)
{

$user_1 = new UserRechargeDetails;// Get records from Database
$items = $user_1->all();

// Store records in an array
$records = [];

$i = 0;
foreach($items as $item)
{
$records[$i][0] = $item->user_name;
$records[$i][1] = $item->rech_mobile;
$i++;
}

// Current page for pagination
$page = $request->page;

// Manually slice array of product to display on page
$perPage = 2;
$offset = ($page-1) * $perPage;
$data = array_slice($records, $offset, $perPage);

// Your pagination
$final_data = new Paginator($data, count($records), $perPage, $page, ['path'  => $request->url(),'query' => $request->query(),]);

/*
For Display links, you may add it in view page
{{ $data->links('pagination::bootstrap-4') }}
*/return view('admin.pagination_new', ['data' => $final_data, 'j' => 1]);

}
}
0

По вопросам рекламы [email protected]