這篇文章主要介紹了laravel手動創建數組分頁的實現代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。
本文介紹了laravel手動建立陣列分頁的實作程式碼,分享給大家,如下:
laravel分頁功能:
有幾種方法可以對資料進行分頁。最簡單的是在 [查詢語句建構器] 或 [Eloquent 查詢] 中使用 paginate 或 simplePaginate 方法。
paginate用法如下:
//控制器中 $users = DB::table('users')->paginate(15); return view('user.index', ['users' => $users]); //视图中 {{ $users->links() }}
#效果如下:
「上一頁」 「1」“ 2”「3」 「下一頁」
simplePaginate用法如下:
#//控制器中 $users = User::where('votes', '>', 100)->simplePaginate(15); return view('user.index', compact('users')); //视图中 {{ $users->links() }}
#「上一頁」 「下一頁」注意:
這種情況可以採用laravel陣列分頁。
其實在laravel文件中已經有寫如何自己使用分頁類別去分頁了,但沒有 詳細說明。手動建立分頁
如果你想手動建立分頁實例並且最終得到一個陣列類型的結果,可以根據需求來建立 IlluminatePaginationPaginator 或 IlluminatePaginationLengthAwarePaginator 實例來實現。 具體可以看IlluminatePaginationLengthAwarePaginator中的這段程式碼:public function __construct($items, $total, $perPage, $currentPage = null, array $options = []) { foreach ($options as $key => $value) { $this->{$key} = $value; } $this->total = $total; $this->perPage = $perPage; $this->lastPage = max((int) ceil($total / $perPage), 1); $this->path = $this->path !== '/' ? rtrim($this->path, '/') : $this->path; $this->currentPage = $this->setCurrentPage($currentPage, $this->pageName); $this->items = $items instanceof Collection ? $items : Collection::make($items); }
//控制器中 public function index(LiveService $liveService, Request $request) { //数据A $dataA = User::where('status', 1)->get()->toArray(); //数据B $dataB = User::where('status', 2)->get()->toArray(); $data = array_merge($dataA, $dataB); //当前页数 默认1 $page = $request->page ?: 1; //每页的条数 $perPage = 4; //计算每页分页的初始位置 $offset = ($page * $perPage) - $perPage; //实例化LengthAwarePaginator类,并传入对应的参数 $data = new LengthAwarePaginator(array_slice($data, $offset, $perPage, true), count($data), $perPage, $page, ['path' => $request->url(), 'query' => $request->query()]); return view('admin.users.index', compact('data')); } //视图中 {{ $data->links() }}
LengthAwarePaginator類別並傳入必要的參數,根據每頁的條數利用array_slice()方法取得每頁要顯示的資料。
以上是laravel手動建立數組分頁的詳細內容。更多資訊請關注PHP中文網其他相關文章!