Пагинация Laravel добавляет данные в одну переменную, а другая в другую переменную - PullRequest
0 голосов
/ 29 июня 2018

У меня проблема с нумерацией страниц В laravel, когда я вызвал paginate() метод, он возвращает

{
   "total": 50,
   "per_page": 15,
   "current_page": 1,
   "last_page": 4,
   "first_page_url": "http://laravel.app?page=1",
   "last_page_url": "http://laravel.app?page=4",
   "next_page_url": "http://laravel.app?page=2",
   "prev_page_url": null,
   "path": "http://laravel.app",
   "from": 1,
   "to": 15,
   "data":[
        {
            // Result Object
        },
        {
            // Result Object
        }
   ]
}

Этот тип объекта. То, что я хочу, - это то, что я хочу установить данные в один переменный, например $a, и кроме данных все другие значения в $b.

Но когда я добавил appends('data') моей переменной paginate, она не работала правильно. Я не нашел решения после поиска в Google. Пожалуйста, помогите мне решить эту проблему.

Вот модель пользователя

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Support\Facades\Auth;
use Illuminate\Database\Eloquent\SoftDeletes;

class User extends Authenticatable {

    use Notifiable;

    use SoftDeletes;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password', 'status', 'role_id',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];
}

Код моего контроллера

public function index() {

        $users = User::where('status', 1)->paginate(10);

return response()->json(
            [
                'error' => 0,
                'errorMsg' => '',
                'data' => [
                    'users' => $users->appends('data')->toArray(),
                ],
            ]
        );
}

Я попробовал этот код

return response()->json(
                [
                    'error' => 0,
                    'errorMsg' => '',
                    'data' => [
                        'users' => $users->only($user['data'])->toArray(),
                        'users_pagination' => $users->except($user['data'])->toArray(),
                    ],
                ]
            );

В этом пользователи работают правильно, но users_pagination работает неправильно. У обоих пользователей users_pagination возвращает одинаковое значение

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Попробуйте это

    $paginateData = User::where('status', 1)->paginate(10);

    $arrPaginateData = $paginateData->toArray();

    $users = $arrPaginateData['data'];

    unset($arrPaginateData['data']); //remove data from paginate array

    $pageInfo =  $arrPaginateData;

Возврат в ответ

    return response()->json(
        [
            'error' => 0,
            'errorMsg' => '',
            'data' => [
                'users' => $users,
                'users_pagination' => $pageInfo
            ],
        ]
    );
0 голосов
/ 29 июня 2018

Почему бы не попробовать повторить объект? приведенный ниже код будет привязывать данные, специфичные для каждого пользователя, к каждому пользователю.

public function index() {
  $users = User::where('status', 1)->paginate(10);
  foreach($users as $users){
    $users->data = 'your data here';
  }

  return response()->json([
      'error' => 0,
      'errorMsg' => '',
      'data' => [
        'users' => $users,
      ],
    ]
  );
}

Если вы хотите использовать приложения Laravel, вы должны следовать согласно документу .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...