Пагинация результатов нетерпеливо загруженных отношений

Я пытаюсь разбить на страницы набор результатов отношений, используя код, очень похожий на этот

<?php

class MainController extends Controller {

    public function show(Main $main)
    {
        $main = $main->with([
            'secondaryMorph' => function ($query) {
                $query->orderBy('ocurred_at');
                $query->paginate(50);
            }
        ])->first();

        return view('main.show')->with(compact('main'));
    }
}

Но когда эта часть кода представления запускается, выдается исключение:

<td colspan="3">Mostrando {{ $secondary->count() }} de {{ $secondary->total() }}</td>
<td colspan="3">{{ $secondary->links() }}</td>

ErrorException (E_ERROR) Метод Illuminate \ Database \ Eloquent \ Collection :: total не существует.

Как я могу использовать ускоренную загрузку с разбивкой на страницы?


person Renoir Reis    schedule 15.02.2019    source источник
comment
См. Также stackoverflow.com/a/54657233/4848587.   -  person Jonas Staudenmeir    schedule 16.02.2019


Ответы (1)


Как насчет :

$main = $main->first();
$secondary = $main->secondaryMorph()->paginate();
return view('main.show')->with(compact('main','secondary'));

А затем в клинке:

<td colspan="3">Mostrando {{ $secondary->count() }} de {{ $secondary->total() }}</td>
<td colspan="3">{{ $secondary->links() }}</td>
person Mihir Bhende    schedule 15.02.2019