Asked Nov 1st, 2019 7:29 AM 103 1 4
  • 103 1 4
+2

Phân trang trong laravel

Share
  • 103 1 4

Chào mọi người. Hiện tại mình đang dùng modal để hiển thị dữ liệu,khi click vào 1 user thì dùng ajax để lấy dữ liệu và dùng jquery để đẩy dữ liệu lên modal. Bây giờ minh vướng chỗ phân trang dữ liệu lấy được. Bác nào có hướng giải quyết không a?Mình cảm ơn

Phạm Tuấn Anh @phamtuananh760
Nov 1st, 2019 7:45 AM

Bạn có thể nói rõ hơn không ạ. phân trang bằng js hay server bạn đã phân trang rồi

0
| Reply
Share

4 ANSWERS


Answered Nov 1st, 2019 7:43 AM
Accepted
+3
  1. Sửa API lấy dữ liệu, để hỗ trợ phân trang, trong Laravel bạn có thể dùng paginate của Query Builder:
$query = User::posts()->where('published', true);
$users = $query->paginate(10) // 10 item mỗi trang

Sau khi gọi paginate, bạn sẽ có một số thông tin gọi là meta như: page hiện tại, tổng số page. Tham khảo thêm trong document của Laravel nhé. Bây giờ bạn hiển thị link với số page tương ứng trên web thôi. Nếu hiển thị danh sách trang trong modal thì bạn listen các nút chuyển trang, khi click thì sẽ gọi api để lấy dữ liệu cho trang mới.

  1. Sửa API lấy dữ liệu, phân trang kiểu Infinity Loading, tức là bạn cuộn hết danh sách thì gọi API lấy thêm dữ liệu cho tới khi API trả về trống thì là ko gọi nữa. Làm kiểu này thì ban đầu bạn sửa code cách 1 như sau:
$lastItemId = $request->query('last_item_id');
$query  = User::posts()->where('published', true);
$query->when($lastItem, function($query) use ($lastItemId) {
    $query->where('posts.id', '<', $lastItemId);
});

$users = $query->take(10);
  1. Nếu ko sửa API thì bạn phân trang bằng javascript nhé.
Share
Answered Nov 1st, 2019 7:34 AM
0

Bạn khởi tạo 1 biến global là số trang trên modal, bạn dùng jquery tự loop ra số trang theo ý muốn, rồi mỗi khi click lấy được user thì update lại biến này sau đó chạy lại function lặp ra số trang

Share
Answered Nov 1st, 2019 7:40 AM
0

Bạn có thể tham khảo cách này có dùng được không nhé

https://pagination.js.org/

Share
Duy Anh @noithatduyanh
Nov 1st, 2019 1:49 PM
Answered Nov 1st, 2019 1:50 PM
0

Làm như cách bạn bên trên là sửa được lỗi nhé hoặc vào theo cách này https://pagination.js.org/bàn ghế inox

Share