วิธีการทำระบบค้นหา ใน Laravel Framework

PHP Knowledge เป็น บอร์ดรวามความรู้ php เน้นบทความ แนวทางการเขียนโปรแกรม บันทึกกันลืม เพื่อให้สมาชิกได้เขียนความรู้ที่ตัวเองมีให้สมาชิกท่านอื่นๆ ได้ เข้ามาอ่าน และ ไว้อ่านเองกันลืมด้วย

Moderator: mindphp, ผู้ดูแลกระดาน

makup
PHP Super Member
PHP Super Member
โพสต์: 398
ลงทะเบียนเมื่อ: 05/10/2020 10:02 am

วิธีการทำระบบค้นหา ใน Laravel Framework

โพสต์ที่ยังไม่ได้อ่าน โดย makup »

ในบทความนี้ จะมาให้ความรู้เกี่ยวกับวิธีการทำระบบค้นหาข้อมูล ใน Laravel Framework (เบื้องต้น) , โดยมีการเพิ่มปุ่ม Search แล้วมีการโยนค่าเข้าไปทำงานใน Controller ใน Function Search , โดยจะมีต้องมีการกำหนด Routing ซะก่อน , ซึ่งจะเป็นประโยนช์สำหรับผู้ที่เริ่มศึกษาในการใช้ Laravel Framework เพื่อจะเอาไปต่อยอดในการทำระบบค้นหาข้อมูล ร่วมกับทำงานกับ Ajax ด้วย

วิธีการทำระบบค้นหา ใน Laravel Framework

Step 1 - ให้ทำการไป Directory ที่ route\web.php , จากนั้นก็ทำการกำหนด routing โดยตั้งชื่อ Route '/searchAirport/search' , จากนั้นก็ให้โยนค่าไปทำงานที่ Controller_show_airport , แล้ววิ่งไปที่ Function search
59.JPG
59.JPG (17.56 KiB) Viewed 4140 times
ตัวอย่าง Coding :

โค้ด: เลือกทั้งหมด

Route::get('/searchAirport/search', 'Controller_show_airport@search');

Step 2 - ให้ทำการสร้าง File showAirport.blade.php ใน Folder views
60.JPG
60.JPG (43.27 KiB) Viewed 4140 times
Step 3 - จากนั้นก็ทำการสร้างปุ่ม Search เพื่อไว้ใช้ค้นหาข้อมูล , โดยมีการส่งค่า name="search" ผ่าน URL ในรูปแบบ method GET , แล้วให้วิ่งไปที่ action="/searchAirport/search" ที่มีการกำหนด Routing ไว้แล้ว
61.JPG
61.JPG (44.71 KiB) Viewed 4140 times
ตัวอย่าง Coding :

โค้ด: เลือกทั้งหมด

<div class="search_box pull-right">
              
        <form class="" method="get" action="/searchAirport/search">
                
          <input type="text" placeholder="Search" name="search" />

       </form>
</div>

Step 4 - ให้ทำการเข้าไปที่ directory app\Http\Controller_show_airport.php
62.JPG
62.JPG (29.08 KiB) Viewed 4140 times


Step 5 - ทำการสร้าง Function search() โดยมีการ รับค่าจาก $request จาก search เข้ามาทำงาน จาก Folders resources/views/product/showAirport.blade.php , แล้วมีการเรียกใช้งาน Model Airport เพื่อดึงฐานข้อมูลตาราง airport เข้ามาทำงาน , ให้มีชี้ตำแหน่งไปที่ Colum name จากตาราง airport ในฐานข้อมูล table_airport แล้วใช้ Keywork "LIKE" เพื่อทำการค้นหาข้อมูล ,จากนั้นให้เติม % ให้ค้น ชื่อที่ตั้งสนามบินทั้งหมด ทั้งข้างหน้า และ ข้างหลัง
63.JPG
63.JPG (81.17 KiB) Viewed 4140 times

ตัวอย่าง Coding :

โค้ด: เลือกทั้งหมด

     public function search(Request $request)
    {
          $name = $request->search;                               //รับค่าจาก $request มา , ส่วน 'search' มาจาก ....
                                                                //... Folders resources/views/product/showAirport.blade.php

        $airport = Airport::where('name',"LIKE","%{$name}%")->paginate(2);         //Query ข้อมูลแบบมีเงื่อนไข ใช้ Where , ส่วน 'name' ...
                                                                                    //... คือ colums name จาก ตาราง database , ส่วน "LIKE" ...
                                                                                    //... ถ้าเป็น String(ข้อความ) ให้ระบุเป็น Keyword  ....
                                                                                    //... ส่วน % ให้ค้น ชื่อที่ตั้งสนามบินทั้งหมด ทั้งข้างหน้า และ ข้างหลัง
        return view("showAirport")
        ->with('airport',$airport);                                               
        
    }

Step 6 - กลับไปที่หน้า directory views\showAirport.blade.php
64-1.JPG
64-1.JPG (43.31 KiB) Viewed 4140 times

Step 7 - เอาคำว่า search ของ Query string จาก URL /searchAirport/search มาต่อท้าย links() , ที่เราค้นหา เช่น พวก ชื่อที่ตั้งสนามบินทั้งหมด , ส่งมาจาก request() แล้วตามด้วย ชื่อ Query string ก็คือ search , แล้ว เอามาต่อด้วย links() หรือ paginate(หมายเลขหน้า) , ถ้าไม่เอามาต่อท้าย จะเกิด bug แสดง หมายเลขหน้า เยอะแยะไปหมด
64.JPG
ตัวอย่าง Coding :

โค้ด: เลือกทั้งหมด

{{$airport->appends(['search'=>request()->query('search')])->links()}}  <!-- เอาคำว่า search ของ Query string จาก URL /searchAirport/search  .... -->
                                                                                            <!-- .... มาต่อท้าย links() , ที่เราค้นหา เช่น พวก ชื่อที่ตั้งสนามบิน , ....  -->
                                                                                            <!-- .... ส่งมาจาก request() แล้วตามด้วย ชื่อ Query string ก็คือ search ...   -->
                                                                                            <!-- .... แล้ว เอามาต่อด้วย links() หรือ paginate(หมายเลขหน้า)  ....  -->
                                                                                            <!-- .... ถ้าไม่เอามาต่อท้าย จะเกิด bug แสดง หมายเลขหน้า เยอะแยะไปหมด  --


Step 8 - ให้ลองทำการค้นหา โดยป้อนข้อมูล ชื่อ สนามบินสุวรรณภูมิ ลงไป
65.JPG
65.JPG (28.42 KiB) Viewed 4140 times

Step 9 - ก็จะมีแสดงข้อมูลตรง URL , หลังจากส่งค่า search ลงไปใน URL , ส่งในรูปแบบ Method GET ไป
65-1.JPG
65-1.JPG (17.35 KiB) Viewed 4140 times

ผลลัพธ์ที่ได้
66.JPG


ข้อสรุป
สรุปโดยรวมแล้ว การทำระบบค้นหาข้อมูล ใน Laravel Framework นั้น , มีประโยชน์สำหรับผู้ที่ต้องจะศึกษาหรือเอาไปพัฒนาต่อยอดในด้านอื่นๆ , หากต้องการศึกษาบทเรียนเพิ่มเติม เกี่ยวกับ Laravel Framework สามารถศึกษาได้จากบทเรียนนี้



แหล่งอ้างอิงข้อมูล
https://www.codespeaker.com/laravel-framework/simple-and-advanced-search-in-laravel-5/
https://www.youtube.com/watch?v=KWnmOBkHzUo
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 32