Làm cách nào để tạo phân trang từ mảng trong laravel?

Bạn đã sử dụng Laravel Pagination với kết quả Eloquent. Đôi khi chúng ta phải phân trang trong Laravel trên các mảng đối tượng tùy chỉnh. Trong hướng dẫn này, chúng ta sẽ xem cách thực hiện phân trang thủ công Laravel

Ở đây chúng ta sẽ sử dụng lớp LengthAwarePaginator của Laravel để tạo phân trang tùy chỉnh trong Laravel

Đây là mã để triển khai Phân trang tùy chỉnh trong Laravel

// Trong Bộ điều khiển

slice[[$currentPage * $perPage] - $perPage, $perPage]->all[];
 
        // Create our paginator and pass it to the view
        $paginatedproducts= new LengthAwarePaginator[$currentPageproducts , count[$productCollection], $perPage];
 
        // set url path for generted links
        $paginatedproducts->setPath[$request->url[]];
 
        return view['products_view', ['products' => $paginatedproducts]];
    }
 
}

cũng đọc. Phân trang Laravel với Ajax

// Theo quan điểm của bạn

Products List
 
    @foreach [$products as $product]
  • {{ $product }}
  • @endforeach

{{ $products->links[] }}

// Trong các tuyến đường của bạn

Route::get['products','ProductsController@items'];

Trong hướng dẫn này, chúng ta sẽ tạo một đối tượng bộ sưu tập tùy chỉnh với các mảng và tạo phân trang bằng cách sử dụng Laravel eloquent

liên kết

https. //www. giải pháp của nó. com/post/laravel-6-paginate-with-collection-or-arrayexample. html

NHẬN CÁC KHÓA HỌC LẬP TRÌNH MIỄN PHÍ

Nhận các hướng dẫn & quà tặng hữu ích về Laravel vào hộp thư đến của bạn

Bài đăng này được gửi bởi các thành viên của chúng tôi. Gửi bài mới

Chủ đề. PHP Laravel

Thẻ. Hướng dẫn Laravel 6

Trong các khuôn khổ khác, phân trang có thể rất đau đớn. Trình phân trang của Laravel được tích hợp với trình tạo truy vấn và Eloquent ORM và cung cấp khả năng phân trang thuận tiện, dễ sử dụng cho các kết quả cơ sở dữ liệu ngay lập tức. HTML được tạo bởi trình phân trang tương thích với khung CSS Bootstrap

Sử dụng cơ bản

Kết quả trình tạo truy vấn phân trang

Có một số cách để phân trang các mục. Đơn giản nhất là sử dụng phương pháp

$users = DB::table['users']->simplePaginate[15];

6 trên trình tạo truy vấn hoặc truy vấn Eloquent. Phương pháp

$users = DB::table['users']->simplePaginate[15];

6 tự động đảm nhiệm việc đặt giới hạn và độ lệch phù hợp dựa trên trang hiện tại đang được người dùng xem. Theo mặc định, trang hiện tại được phát hiện bởi giá trị của đối số chuỗi truy vấn

$users = DB::table['users']->simplePaginate[15];

8 trên yêu cầu HTTP. Giá trị này được Laravel tự động phát hiện và cũng được tự động chèn vào các liên kết do trình phân trang tạo ra

Trong ví dụ này, đối số duy nhất được truyền cho phương thức

$users = DB::table['users']->simplePaginate[15];

6 là số mục bạn muốn hiển thị "trên mỗi trang". Trong trường hợp này, hãy xác định rằng chúng tôi muốn hiển thị

$users = App\User::paginate[15];

0 mục trên mỗi trang

________số 8

{note} Hiện tại, Laravel không thể thực thi các thao tác phân trang sử dụng câu lệnh

$users = App\User::paginate[15];

1 một cách hiệu quả. Nếu bạn cần sử dụng

$users = App\User::paginate[15];

1 với tập kết quả được phân trang, bạn nên truy vấn cơ sở dữ liệu và tạo trình phân trang theo cách thủ công

"Phân trang đơn giản"

Nếu bạn chỉ cần hiển thị các liên kết "Tiếp theo" và "Trước đó" đơn giản trong chế độ xem phân trang của mình, bạn có thể sử dụng phương pháp

$users = App\User::paginate[15];

3 để thực hiện truy vấn hiệu quả hơn. Điều này rất hữu ích cho các tập dữ liệu lớn khi bạn không cần hiển thị liên kết cho từng số trang khi hiển thị chế độ xem của mình

$users = DB::table['users']->simplePaginate[15];

Phân trang kết quả hùng biện

Bạn cũng có thể phân trang các truy vấn Eloquent. Trong ví dụ này, chúng tôi sẽ phân trang mô hình

$users = App\User::paginate[15];

4 với

$users = App\User::paginate[15];

0 mục trên mỗi trang. Như bạn có thể thấy, cú pháp gần giống với kết quả của trình tạo truy vấn phân trang

$users = App\User::paginate[15];

Bạn có thể gọi

$users = DB::table['users']->simplePaginate[15];

6 sau khi đặt các ràng buộc khác cho truy vấn, chẳng hạn như mệnh đề

$users = App\User::paginate[15];

7

Products List
 
    @foreach [$products as $product]
  • {{ $product }}
  • @endforeach

{{ $products->links[] }}

8

Bạn cũng có thể sử dụng phương pháp

$users = App\User::paginate[15];

3 khi phân trang các mô hình Eloquent

Route::get['products','ProductsController@items'];
0

Tạo thủ công một Paginator

Đôi khi bạn có thể muốn tạo một phiên bản phân trang theo cách thủ công, chuyển cho nó một mảng các mục. Bạn có thể làm như vậy bằng cách tạo phiên bản

$users = App\User::paginate[15];

9 hoặc
Products List
 
    @foreach [$products as $product]
  • {{ $product }}
  • @endforeach

{{ $products->links[] }}

80, tùy thuộc vào nhu cầu của bạn

Lớp

Products List
 
    @foreach [$products as $product]
  • {{ $product }}
  • @endforeach

{{ $products->links[] }}

81 không cần biết tổng số mục trong tập kết quả; .
Products List
 
    @foreach [$products as $product]
  • {{ $product }}
  • @endforeach

{{ $products->links[] }}

82 chấp nhận hầu hết các đối số giống như
Products List
 
    @foreach [$products as $product]
  • {{ $product }}
  • @endforeach

{{ $products->links[] }}

81;

Nói cách khác,

Products List
 
    @foreach [$products as $product]
  • {{ $product }}
  • @endforeach

{{ $products->links[] }}

81 tương ứng với phương thức

$users = App\User::paginate[15];

3 trên trình tạo truy vấn và Eloquent, trong khi
Products List
 
    @foreach [$products as $product]
  • {{ $product }}
  • @endforeach

{{ $products->links[] }}

82 tương ứng với phương thức

$users = DB::table['users']->simplePaginate[15];

6

{lưu ý} Khi tạo phiên bản trình đánh trang theo cách thủ công, bạn nên "cắt" mảng kết quả mà bạn chuyển đến trình trang theo cách thủ công. Nếu bạn không chắc chắn cách thực hiện việc này, hãy xem hàm array_slice PHP

Hiển thị kết quả phân trang

Khi gọi phương thức

$users = DB::table['users']->simplePaginate[15];

6, bạn sẽ nhận được một thể hiện của
Products List
 
    @foreach [$products as $product]
  • {{ $product }}
  • @endforeach

{{ $products->links[] }}

80. Khi gọi phương thức

$users = App\User::paginate[15];

3, bạn sẽ nhận được một thể hiện của

$users = App\User::paginate[15];

9. Các đối tượng này cung cấp một số phương thức mô tả tập kết quả. Ngoài các phương thức trợ giúp này, các thể hiện của trình phân trang là các trình vòng lặp và có thể được lặp dưới dạng một mảng. Vì vậy, khi bạn đã truy xuất kết quả, bạn có thể hiển thị kết quả và hiển thị các liên kết trang bằng Blade

Phương thức

Route::get['products','ProductsController@items'];
02 sẽ hiển thị các liên kết đến phần còn lại của các trang trong tập hợp kết quả. Mỗi liên kết này sẽ chứa biến chuỗi truy vấn

$users = DB::table['users']->simplePaginate[15];

8 phù hợp. Hãy nhớ rằng, HTML được tạo bởi phương thức
Route::get['products','ProductsController@items'];
02 tương thích với khung CSS Bootstrap

Tùy chỉnh URI của Paginator

Phương thức

Route::get['products','ProductsController@items'];
05 cho phép bạn tùy chỉnh URI được sử dụng bởi trình phân trang khi tạo liên kết. Ví dụ: nếu bạn muốn trình phân trang tạo các liên kết như
Route::get['products','ProductsController@items'];
06, bạn nên chuyển
Route::get['products','ProductsController@items'];
07 cho phương thức
Route::get['products','ProductsController@items'];
05

$users = DB::table['users']->simplePaginate[15];

1

Nối vào liên kết phân trang

Bạn có thể thêm vào chuỗi truy vấn của các liên kết phân trang bằng phương pháp

Route::get['products','ProductsController@items'];
09. Ví dụ: để thêm

$users = DB::table['users']->simplePaginate[15];

10 vào mỗi liên kết phân trang, bạn nên thực hiện lệnh gọi sau tới
Route::get['products','ProductsController@items'];
09

$users = DB::table['users']->simplePaginate[15];

5

Nếu bạn muốn nối tất cả các giá trị chuỗi truy vấn hiện tại vào các liên kết phân trang, bạn có thể sử dụng phương thức

$users = DB::table['users']->simplePaginate[15];

12

$users = DB::table['users']->simplePaginate[15];

7

Nếu bạn muốn thêm một "đoạn mã băm" vào các URL của trình phân trang, bạn có thể sử dụng phương thức

$users = DB::table['users']->simplePaginate[15];

13. Ví dụ: để thêm

$users = DB::table['users']->simplePaginate[15];

14 vào cuối mỗi liên kết phân trang, hãy gọi phương thức

$users = DB::table['users']->simplePaginate[15];

13 như sau

$users = DB::table['users']->simplePaginate[15];

1

Điều chỉnh cửa sổ liên kết phân trang

Bạn có thể kiểm soát số lượng liên kết bổ sung được hiển thị ở mỗi bên của "cửa sổ" URL của trình phân trang. Theo mặc định, ba liên kết được hiển thị ở mỗi bên của liên kết trang chính. Tuy nhiên, bạn có thể kiểm soát số này bằng phương pháp

$users = DB::table['users']->simplePaginate[15];

16

$users = DB::table['users']->simplePaginate[15];

3

Chuyển đổi kết quả thành JSON

Các lớp kết quả phân trang của Laravel triển khai hợp đồng Giao diện

$users = DB::table['users']->simplePaginate[15];

17 và hiển thị phương thức

$users = DB::table['users']->simplePaginate[15];

18, do đó rất dễ dàng chuyển đổi kết quả phân trang của bạn thành JSON. Bạn cũng có thể chuyển đổi một thể hiện của trình phân trang thành JSON bằng cách trả về nó từ một tuyến đường hoặc hành động của bộ điều khiển

$users = DB::table['users']->simplePaginate[15];

0

JSON từ trình phân trang sẽ bao gồm thông tin meta như

$users = DB::table['users']->simplePaginate[15];

19,

$users = DB::table['users']->simplePaginate[15];

50,

$users = DB::table['users']->simplePaginate[15];

51, v.v. Các đối tượng kết quả thực tế sẽ có sẵn thông qua khóa

$users = DB::table['users']->simplePaginate[15];

52 trong mảng JSON. Đây là một ví dụ về JSON được tạo bằng cách trả về một phiên bản trình phân trang từ một tuyến đường

$users = DB::table['users']->simplePaginate[15];

1

Tùy chỉnh Chế độ xem Phân trang

Theo mặc định, các chế độ xem được hiển thị để hiển thị các liên kết phân trang tương thích với khung CSS Bootstrap. Tuy nhiên, nếu bạn không sử dụng Bootstrap, bạn có thể tự do xác định chế độ xem của riêng mình để hiển thị các liên kết này. Khi gọi phương thức

Route::get['products','ProductsController@items'];
02 trên phiên bản paginator, hãy chuyển tên chế độ xem làm đối số đầu tiên cho phương thức

$users = DB::table['users']->simplePaginate[15];

2

Tuy nhiên, cách dễ nhất để tùy chỉnh chế độ xem phân trang là xuất chúng sang thư mục

$users = DB::table['users']->simplePaginate[15];

54 của bạn bằng cách sử dụng lệnh

$users = DB::table['users']->simplePaginate[15];

55

$users = DB::table['users']->simplePaginate[15];

3

Lệnh này sẽ đặt các khung nhìn trong thư mục

$users = DB::table['users']->simplePaginate[15];

56. Tệp

$users = DB::table['users']->simplePaginate[15];

57 trong thư mục này tương ứng với chế độ xem phân trang mặc định. Bạn có thể chỉnh sửa tệp này để sửa đổi HTML phân trang

Nếu bạn muốn chỉ định một tệp khác làm chế độ xem phân trang mặc định, bạn có thể sử dụng các phương thức

$users = DB::table['users']->simplePaginate[15];

58 và

$users = DB::table['users']->simplePaginate[15];

59 của trình phân trang trong

$users = DB::table['users']->simplePaginate[15];

70 của mình

$users = DB::table['users']->simplePaginate[15];

4

Sử dụng Tailwind

Laravel bao gồm các chế độ xem phân trang được xây dựng bằng Tailwind CSS. Để sử dụng các chế độ xem này thay vì các chế độ xem Bootstrap mặc định, bạn có thể gọi phương thức

$users = DB::table['users']->simplePaginate[15];

71 của trình phân trang trong

$users = DB::table['users']->simplePaginate[15];

70 của mình

Làm cách nào để tạo phân trang tùy chỉnh từ một mảng trong laravel?

Bước 2. Nhập đặc điểm này vào tệp mà bạn muốn tạo phân trang từ một mảng. Ở đây tôi đang nhập đặc điểm này vào bộ điều khiển gia đình. Trong đoạn mã trên, tôi đã nhập đặc điểm phân trang trong bộ điều khiển gia đình. Bước 3. Chỉ cần chuyển mảng của bạn làm đối số trong hàm phân trang mà bạn đã tạo trong PaginationTrait

Làm cách nào để tạo phân trang tùy chỉnh trong laravel?

Để tùy chỉnh các liên kết phân trang của Laravel, bạn cần thực hiện các bước sau. .
Tạo một ứng dụng Laravel
Tạo một cơ sở dữ liệu và kết nối với nó
Cơ sở dữ liệu hạt giống với dữ liệu giả
Xem tất cả người dùng
thêm phân trang
Xuất bản chế độ xem phân trang
Chỉnh sửa và sử dụng

Làm cách nào để phân trang một bộ sưu tập trong laravel?

Laravel cung cấp tính năng phân trang ngay lập tức cho Bộ sưu tập Eloquent, nhưng bạn không thể sử dụng tính năng đó theo mặc định trên Bộ sưu tập thông thường. Các bộ sưu tập có phương thức forPage[], nhưng nó ở mức độ thấp hơn, vì vậy nó không tạo ra các liên kết phân trang. Vì vậy, bạn phải tạo phiên bản LengthAwarePaginator .

Chủ Đề