Phân trang trong laravel
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
4 CÂU TRẢ LỜI
- 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.
- 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);
- Nếu ko sửa API thì bạn phân trang bằng javascript nhé.
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
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
Bạn có thể tham khảo cách này có dùng được không nhé
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