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);
   36   37   38   39   40   41   42   43   44   45   46