Page 41 - Laravel5_v1
P. 41
่
้
้
การแบงหนาขอมูล (Pagination)
้
้
้
ิ
้
้
้
้
้
้
หากขอมูลมีปรมาณมาก การแสดงขอมูลทั งหมดในหนาเดียวอาจทําใหขอมูลโหลดไดชา เราควรทําการแบ่งหนาขอมูล และ Laravel ได ้
้
้
ั
เตรยม เมธอด ใหเราเรยกใชไวแลวครบ โดยเราจะเขียนโคดแบ่งหนานี ที Controller และอีกส่วนจะเขียนที views ไดแก่
้
้
้
้
ี
ี
้
้
การแบ่งหนาแบบปกติ จะใช paginate(จานวนแถวต่อหนา) ตัวอย่างเช่น
้
ํ
้
$persons = Person::paginate(20);
ํ
้
้
้
การแบ่งหนาอย่างง่าย จะใช simplePaginate(จานวนแถวต่อหนา) ตัวอย่างเช่น
$persons = Person::simplePaginate(15);
และในส่วนของ view ใหเขียนโคดเพื อ render ดังนี
้
้
{!! $persons->render() !!} //$persons คือ ตัวแปรที ส่งมาจาก Controller
ี
้
้
และหากตองการแสดงจานวนขอมูลทั งหมดใหเขียนแบบน
ํ
้
{{ $persons->total() }} //$persons คือ ตัวแปรที ส่งมาจาก Controller
้
ู
ั
้
้
Note: เราจะเลือกใชการแบ่งหนาแบบปกติ หรอ การแบ่งหนาอย่างง่ายกไดครบ ขอแตกต่างคือ รปแบบการแสดงผลโดย
ื
้
็
้
ู
การแบ่งหนาอย่างง่าย จะแสดงในรปแบบ "Next" และ "Previous"
้
มาลองแบ่งหนาขอมูลประเภทหนังสือกัน
้
้
้
้
ิ
1. เปดไฟล์ app\Http\Controllers\TypeBooksController.php โดยเพิ มโคดแบ่งหนาที เมธอด index() ดังนี
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\TypeBooks;
class TypeBooksController extends Controller {
public function index() {
//$typebooks = TypeBooks::all();
//$typebooks = TypeBooks::orderBy('id','desc')->get();
ํ
$count = TypeBooks::count(); //นับจานวนแถวทั งหมด
้
//แบ่งหนา
//$typebooks = TypeBooks::simplePaginate(5);