Phân trang trong Laravel với Raw SQL Queries
Nếu bạn cần custom paging với Raw SQL Queries ta sẽ dùng class LengthAwarePaginator để tạo phân trang.
Bước 1 : include các class sau:
use DB; use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Support\Facades\Input; use Illuminate\Http\Request;
Bước 2: Tạo function trong controller:
public function arrayPaginator($array, $request) { $page = Input::get('page', 1); $perPage = 10;//số record mỗi trang $offset = ($page * $perPage) - $perPage; return new LengthAwarePaginator(array_slice($array, $offset, $perPage, true), count($array), $perPage, $page, ['path' => $request->url(), 'query' => $request->query()]); }
Bước 3 : Phân trang
public function paging(Request $request){ $sql="select * from test";//query của bạn $result = DB::select($sql); $pagings = $this->arrayPaginator($result, $request); return view('template', compact('pagings')); }
Bước 4: Show phân trang trong template
{{ $pagings ->links() }}