jeudi 31 octobre 2019

Laravel - Paginate a shuffled array

I want to paginate a shuffled array of elements. I know Laravel Paginator expect a Collection. In more details, I want to shuffle a resultset from the database. Therefore I have the following line of code:

$getallFragen = $frage->getAllFragen2()->shuffle()->all();

This line selects all questions and shuffles the collection.

Furthermore I want to shuffle the answers from the questions, which also works correctly. Then I want to paginate the items with one item per page, which also works properly, but I receive duplicate items in the pagination. First I thought, it has to be the collection, but the collection is built correctly and I don´t know, what the problem could be. I could imagine, that my own paginator is not working the way it should. I also create an array, where I store the items, which are allowed in the exam and then make a collection out of the array to make sure, that there are no duplicate entries.

        $currentPage = LengthAwarePaginator::resolveCurrentPage();
        $itemCollection = collect($pruefung);
        $perPage = 1;
        $currentPageItems = $itemCollection->slice(($currentPage * $perPage) - $perPage, $perPage)->all();
        $paginatedItems = new LengthAwarePaginator($currentPageItems, count($itemCollection), $perPage);

        $paginatedItems->setPath($request->url());

        return view('pruefungssimulation', ["fragen" => $paginatedItems]);

In the frontend I just use @foreach($fragen as $frage) to get all items out of the collection.



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire