нельзя использовать pagination () для объекта массива в laravel - PullRequest
0 голосов
/ 16 октября 2019

Я создаю массив в Laravel 5.7. Я хотел бы разбить на страницы, но это ошибки из-за особенностей массива. что мне делать?

В MyController.php:

$result = array();
foreach ($sameDateMatches as $key => $date) {
   array_push($result, [
   'date' => $key,
   'day_of_week' => getDayOfWeek($key),
   'matches' => $date,
    ]);
 }

 if (!empty($_GET['page'])) {
    $result = $result->paginate(10);
    $pagination = $result;
 } else {
    $result = $result;
    $pagination = null;
 }

return returnSuccessfulResponse(
   trans('api.response.successful.show'),
      [
        'Scheduled Matches' => $result,
      ],
      $pagination
 );

Вызов функции-члена paginate () в массиве

Ответы [ 2 ]

2 голосов
/ 16 октября 2019

Вы можете использовать paginate только для экземпляра QueryBuilder или для Eloquent запроса .

Вместо этого, если вам нужно «разбить на страницы» массив, вы можете использовать PHP array_chunk .

array_chunk($result, 10, true);
0 голосов
/ 23 октября 2019

Я решил свои проблемы, используя make() и LengthAwarePaginator, как показано ниже:

if (!empty($_GET['page'])) {

     $per_page = !empty($_GET['per_page']) ? $_GET['per_page'] : 10;

     $page = $_GET['page'];

     $result = $result instanceof Collection ? $result : Collection::make($result);

     $result = new LengthAwarePaginator(
                    $result->forPage($page, $per_page)->values(),
                    $result->count(),
                    $per_page,
                    $page,
                    ['path' => request()->url()]
              );

     $pagination = $result;

} else {
     $pagination = null;
}
...