Yêu cầu Nov 1st, 2019 7:29 a.m. 509 1 4
  • 509 1 4
+1

Phân trang trong laravel

Chia sẻ
  • 509 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

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

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

4 CÂU TRẢ LỜI


Đã trả lời Nov 1st, 2019 7:43 a.m.
Đã được chấp nhận
+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é.
Chia sẻ
Đã trả lời Nov 1st, 2019 7:40 a.m.
+1

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

https://pagination.js.org/

Chia sẻ
Avatar Duy Anh @noithatduyanh
Nov 1st, 2019 1:49 p.m.
Đã trả lời Nov 1st, 2019 7:34 a.m.
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

Chia sẻ
Đã trả lời Nov 1st, 2019 1:50 p.m.
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

Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí