Thư viện phân trang PHP

Trong các khuôn khổ khác, phân trang có thể rất đau đớn. Chúng tôi hy vọng cách tiếp cận phân trang của Laravel sẽ là một luồng gió mới. 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 bản ghi cơ sở dữ liệu mà không cần cấu hình

Theo mặc định, HTML do trình phân trang tạo tương thích với khung CSS Tailwind;

gió đuôi JIT

Nếu bạn đang sử dụng chế độ xem phân trang Tailwind mặc định của Laravel và công cụ JIT Tailwind, thì bạn nên đảm bảo rằng tệp

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

2 của tệp

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

3 của ứng dụng của bạn tham chiếu đến chế độ xem phân trang của Laravel để các lớp Tailwind của chúng không bị xóa

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

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];

4 trên trình tạo truy vấn hoặc truy vấn Eloquent. Phương thức

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

4 tự động đảm nhiệm việc đặt "giới hạn" và "độ lệch" của truy vấn 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];

6 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];

4 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 = DB::table['users']->simplePaginate[15];

8 mục trên mỗi trang

________số 8

Phân trang đơn giản

Phương thức

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

4 đếm tổng số bản ghi khớp với truy vấn trước khi truy xuất bản ghi từ cơ sở dữ liệu. Điều này được thực hiện để người đánh số trang biết tổng cộng có bao nhiêu trang bản ghi. Tuy nhiên, nếu bạn không định hiển thị tổng số trang trong giao diện người dùng của ứng dụng thì truy vấn đếm bản ghi là không cần thiết

Do đó, 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 giao diện người dùng của ứng dụng, bạn có thể sử dụng phương pháp

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

00 để thực hiện một truy vấn đơn lẻ hiệu quả

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

Phân trang kết quả hùng hồ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 = DB::table['users']->simplePaginate[15];

01 và cho biết rằng chúng tôi dự định hiển thị 15 bản ghi 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 = DB::table['users']->simplePaginate[15];

0

Tất nhiên, bạn có thể gọi phương thức

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

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

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

03

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

6

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

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

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

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

8

Tương tự, bạn có thể sử dụng phương thức

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

05 để phân trang con trỏ cho các mô hình Eloquent

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

0

Nhiều phiên bản Paginator trên mỗi trang

Đôi khi, bạn có thể cần hiển thị hai trình phân trang riêng biệt trên một màn hình do ứng dụng của bạn hiển thị. Tuy nhiên, nếu cả hai phiên bản của trình phân trang đều sử dụng tham số chuỗi truy vấn

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

6 để lưu trữ trang hiện tại thì hai phiên bản của trình phân trang sẽ xung đột. Để giải quyết xung đột này, bạn có thể chuyển tên của tham số chuỗi truy vấn mà bạn muốn sử dụng để lưu trữ trang hiện tại của trình phân trang thông qua đối số thứ ba được cung cấp cho các phương thức

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

4,

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

00 và

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

05

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

5

Phân trang con trỏ

Trong khi

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

4 và

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

00 tạo các truy vấn bằng cách sử dụng mệnh đề "offset" của SQL, phân trang con trỏ hoạt động bằng cách xây dựng các mệnh đề "where" so sánh các giá trị của các cột được sắp xếp có trong truy vấn, cung cấp hiệu suất cơ sở dữ liệu hiệu quả nhất có sẵn trong tất cả các phương thức phân trang của Laravel. Phương pháp phân trang này đặc biệt phù hợp với tập dữ liệu lớn và giao diện người dùng cuộn "vô hạn"

Không giống như phân trang dựa trên độ lệch, bao gồm số trang trong chuỗi truy vấn của các URL được tạo bởi trình phân trang, phân trang dựa trên con trỏ đặt một chuỗi "con trỏ" trong chuỗi truy vấn. Con trỏ là một chuỗi được mã hóa chứa vị trí mà truy vấn được phân trang tiếp theo sẽ bắt đầu phân trang và hướng truy vấn sẽ phân trang

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

8

Bạn có thể tạo một phiên bản trình phân trang dựa trên con trỏ thông qua phương thức

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

05 do trình tạo truy vấn cung cấp. Phương thức này trả về một thể hiện của

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

63

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

1

Sau khi bạn đã truy xuất một phiên bản trình phân trang con trỏ, bạn có thể thực hiện như thường lệ khi sử dụng các phương thức

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

4 và

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

00. Để biết thêm thông tin về các phương thức cá thể được cung cấp bởi trình phân trang con trỏ, vui lòng tham khảo

Cảnh báo
Truy vấn của bạn phải chứa mệnh đề "sắp xếp theo thứ tự" để tận dụng tính năng phân trang của con trỏ.

Con trỏ so với. Phân trang bù đắp

Để minh họa sự khác biệt giữa phân trang offset và phân trang con trỏ, hãy xem xét một số truy vấn SQL mẫu. Cả hai truy vấn sau đây đều sẽ hiển thị "trang thứ hai" của kết quả cho bảng

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

66 được sắp xếp theo thứ tự của

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

67

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Support\Facades\DB;

class UserController extends Controller

* Show all application users.

* @return \Illuminate\Http\Response

return view['user.index', [

'users' => DB::table['users']->paginate[15]

0

Truy vấn phân trang con trỏ cung cấp các ưu điểm sau so với phân trang bù

  • Đối với các tập dữ liệu lớn, phân trang con trỏ sẽ mang lại hiệu suất tốt hơn nếu các cột "sắp xếp theo" được lập chỉ mục. Điều này là do mệnh đề "offset" quét qua tất cả dữ liệu đã khớp trước đó
  • Đối với các tập dữ liệu được ghi thường xuyên, phân trang bù trừ có thể bỏ qua các bản ghi hoặc hiển thị các bản trùng lặp nếu kết quả gần đây đã được thêm vào hoặc bị xóa khỏi trang mà người dùng hiện đang xem

Tuy nhiên, phân trang con trỏ có những hạn chế sau

  • Giống như

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

    00, chỉ có thể sử dụng phân trang con trỏ để hiển thị liên kết "Tiếp theo" và "Trước đó" và không hỗ trợ tạo liên kết có số trang
  • Nó yêu cầu thứ tự dựa trên ít nhất một cột duy nhất hoặc tổ hợp các cột duy nhất. Các cột có giá trị

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

    69 không được hỗ trợ
  • Biểu thức truy vấn trong mệnh đề "order by" chỉ được hỗ trợ nếu chúng được đặt bí danh và cũng được thêm vào mệnh đề "select"
  • Biểu thức truy vấn có tham số không được hỗ trợ

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 mà bạn đã có trong bộ nhớ. Bạn có thể làm như vậy bằng cách tạo phiên bản

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

80,

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

81 hoặc

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

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

Các lớp

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

83 và

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

84 không cần biết tổng số phần tử trong tập kết quả; .

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

85 chấp nhận hầu hết các đối số giống như

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

83;

Nói cách khác,

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

83 tương ứng với phương pháp

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

00 trên trình tạo truy vấn,

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

84 tương ứng với phương pháp

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

05 và

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

85 tương ứng với phương pháp

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

4

Cảnh báo
Khi tạo phiên bản trình phân 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 phân 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.

Tùy chỉnh URL phân trang

Theo mặc định, các liên kết được tạo bởi trình phân trang sẽ khớp với URI của yêu cầu hiện tại. Tuy nhiên, phương thức

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

03 của trình phân trang cho phép bạn tùy chỉnh URI mà trình phân trang sử dụng 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ư

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

04, bạn nên chuyển

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

05 cho phương thức

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

03

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Support\Facades\DB;

class UserController extends Controller

* Show all application users.

* @return \Illuminate\Http\Response

return view['user.index', [

'users' => DB::table['users']->paginate[15]

1

Nối các giá trị chuỗi truy vấn

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

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

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

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

08 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

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

07

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Support\Facades\DB;

class UserController extends Controller

* Show all application users.

* @return \Illuminate\Http\Response

return view['user.index', [

'users' => DB::table['users']->paginate[15]

2

Bạn có thể sử dụng phương thức

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

50 nếu bạn muốn nối tất cả các giá trị chuỗi truy vấn của yêu cầu hiện tại vào các liên kết phân trang

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Support\Facades\DB;

class UserController extends Controller

* Show all application users.

* @return \Illuminate\Http\Response

return view['user.index', [

'users' => DB::table['users']->paginate[15]

3

Nối các đoạn băm

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

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

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

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

52 vào cuối mỗi liên kết phân trang, bạn nên gọi phương thức

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

51 như vậy

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Support\Facades\DB;

class UserController extends Controller

* Show all application users.

* @return \Illuminate\Http\Response

return view['user.index', [

'users' => DB::table['users']->paginate[15]

4

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

Khi gọi phương thức

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

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

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

81, trong khi gọi phương thức

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

00 sẽ trả về một thể hiện của

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

80. Và, cuối cùng, gọi phương thức

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

05 trả về một thể hiện của

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

63

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 pháp

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

80 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];

6 thích hợp. Hãy nhớ rằng HTML được tạo bởi phương pháp

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

80 tương thích với khung CSS Tailwind

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

Khi trình phân trang hiển thị các liên kết phân trang, số trang hiện tại được hiển thị cũng như các liên kết cho ba trang trước và sau trang hiện tại. Sử dụng phương pháp

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

83, 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 trang hiện tại ở giữa, cửa sổ trượt của các liên kết do trình phân trang tạo ra

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Support\Facades\DB;

class UserController extends Controller

* Show all application users.

* @return \Illuminate\Http\Response

return view['user.index', [

'users' => DB::table['users']->paginate[15]

5

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

Các lớp paginator của Laravel triển khai hợp đồng Giao diện

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

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

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

85, 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

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Support\Facades\DB;

class UserController extends Controller

* Show all application users.

* @return \Illuminate\Http\Response

return view['user.index', [

'users' => DB::table['users']->paginate[15]

6

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

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

86,

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

87,

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

88, v.v. Các bản ghi kết quả có sẵn thông qua khóa

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

89 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

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Support\Facades\DB;

class UserController extends Controller

* Show all application users.

* @return \Illuminate\Http\Response

return view['user.index', [

'users' => DB::table['users']->paginate[15]

7

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 Tailwind. Tuy nhiên, nếu không sử dụng Tailwind, thì bạn có thể tùy ý 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

'./resources/**/*.blade.php',

'./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',

80 trên phiên bản paginator, bạn có thể chuyển tên chế độ xem làm đối số đầu tiên cho phương thức

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Support\Facades\DB;

class UserController extends Controller

* Show all application users.

* @return \Illuminate\Http\Response

return view['user.index', [

'users' => DB::table['users']->paginate[15]

8

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];

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

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

12

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Support\Facades\DB;

class UserController extends Controller

* Show all application users.

* @return \Illuminate\Http\Response

return view['user.index', [

'users' => DB::table['users']->paginate[15]

9

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

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

13 của ứng dụng của bạn. Tệp

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

14 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ể gọi các phương thức

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

15 và

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

16 của trình phân trang trong phương thức

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

17 của lớp

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

18 của bạn

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

0

Sử dụng Bootstrap

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

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

19 hoặc

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Support\Facades\DB;

class UserController extends Controller

* Show all application users.

* @return \Illuminate\Http\Response

return view['user.index', [

'users' => DB::table['users']->paginate[15]

00 của trình phân trang trong phương thức

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

17 của lớp

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

18 của bạn

Làm cách nào để phân trang trong php?

Các bước thực hiện để thực hiện phân trang với PHP và MySQL là. BƯỚC 1. Tạo cơ sở dữ liệu quy mô lớn. BƯỚC 2. Tạo một bảng và chèn danh sách các bản ghi trong đó. BƯỚC 3. Tạo một liên kết cho phân trang để phân tách/phân phối dữ liệu trên một số trang khác nhau và thêm nó vào cuối bảng được tạo ở bước 2

Làm cách nào để tạo API phân trang trong php?

Triển khai phân trang bằng PHP và MySQL .
Tạo cơ sở dữ liệu và bảng. Cung cấp một danh sách các bản ghi vào bảng
Kết nối với cơ sở dữ liệu MySQL
Tạo liên kết phân trang để phân chia dữ liệu trên nhiều trang và thêm chúng vào cuối bảng
Lấy dữ liệu từ cơ sở dữ liệu và hiển thị nó trên nhiều trang

Làm cách nào để phân trang mảng trong php?

phân trang. php . Chúng ta hãy phân trang. // Mảng lớn với nhiều dữ liệu dbig. $pagination = array_slice[$my_huge_array, $pagination['offset'], $pagination['length'], true];

Làm cách nào để tạo phân trang động trong php?

Tạo kết nối cơ sở dữ liệu .
Tính tổng số trang với giới hạn động. Biến $limit đặt giới hạn động để hiển thị kết quả thông qua phân trang và chọn danh sách thả xuống. .
Phân trang PHP & Truy vấn SQL. .
Triển khai phân trang với PHP. .
Đặt giới hạn bản ghi động

Chủ Đề