Ручной пагинатор объединенной коллекции

У меня есть объединенная коллекция, которую я хочу разбить на страницы, и я не могу понять это.

Во-первых, причина, по которой мне нужно создать пагинатор вручную, заключается в том, что я сначала извлекаю 2 коллекции и объединяю их, например:

$a = ModelA::all();
$b = ModelB::all();

$c = $a->merge($b);

Следующий шаг — разбить эту коллекцию на страницы, я попробовал Paginator и LengthAwarePaginator.

ПАГИНАТОР

$page = 1;
$results = new Paginator($c, 2, $page);

Здесь я получаю 2 первых результата в пагинаторе

$page = 2;
$results = new Paginator($c, 2, $page);

Я все еще получаю 2 первых результата, в то время как я ожидаю третьего и четвертого результата (коллекция состоит из более чем 2 элементов!)

LENGTHAWAREPAGINATOR

$page = 1;
$results = new LengthAwarePaginator($c, count($c), 2, $page);

Здесь я получаю Paginator, но элементы содержат все элементы коллекции, независимо от того, какой номер страницы я запрашиваю (вместо 2, которые я прошу)

Любые идеи о том, что может быть проблемой? заранее спасибо


person Gregory    schedule 20.03.2015    source источник
comment
Я думаю, что это ошибка в Laravel. Я проверил Illuminate\Pagination\Paginator, и функция checkForMorePages() нарезает элементы, всегда начиная с 0, а не с ($this->currentPage()-1)*$this->perPage()   -  person Gregory    schedule 20.03.2015


Ответы (1)


По мнению сообщества Laravel, это сделано намеренно. Вы должны нарезать свои предметы, прежде чем передавать их в Paginator.

person Gregory    schedule 20.03.2015