วิธีการทำระบบค้นหา ใน Laravel Framework
Step 1 - ให้ทำการไป Directory ที่ route\web.php , จากนั้นก็ทำการกำหนด routing โดยตั้งชื่อ Route '/searchAirport/search' , จากนั้นก็ให้โยนค่าไปทำงานที่ Controller_show_airport , แล้ววิ่งไปที่ Function search ตัวอย่าง Coding :
โค้ด: เลือกทั้งหมด
Route::get('/searchAirport/search', 'Controller_show_airport@search');
Step 2 - ให้ทำการสร้าง File showAirport.blade.php ใน Folder views Step 3 - จากนั้นก็ทำการสร้างปุ่ม Search เพื่อไว้ใช้ค้นหาข้อมูล , โดยมีการส่งค่า name="search" ผ่าน URL ในรูปแบบ method GET , แล้วให้วิ่งไปที่ action="/searchAirport/search" ที่มีการกำหนด Routing ไว้แล้ว ตัวอย่าง 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
Step 5 - ทำการสร้าง Function search() โดยมีการ รับค่าจาก $request จาก search เข้ามาทำงาน จาก Folders resources/views/product/showAirport.blade.php , แล้วมีการเรียกใช้งาน Model Airport เพื่อดึงฐานข้อมูลตาราง airport เข้ามาทำงาน , ให้มีชี้ตำแหน่งไปที่ Colum name จากตาราง airport ในฐานข้อมูล table_airport แล้วใช้ Keywork "LIKE" เพื่อทำการค้นหาข้อมูล ,จากนั้นให้เติม % ให้ค้น ชื่อที่ตั้งสนามบินทั้งหมด ทั้งข้างหน้า และ ข้างหลัง
ตัวอย่าง 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
Step 7 - เอาคำว่า search ของ Query string จาก URL /searchAirport/search มาต่อท้าย links() , ที่เราค้นหา เช่น พวก ชื่อที่ตั้งสนามบินทั้งหมด , ส่งมาจาก request() แล้วตามด้วย ชื่อ Query string ก็คือ search , แล้ว เอามาต่อด้วย links() หรือ paginate(หมายเลขหน้า) , ถ้าไม่เอามาต่อท้าย จะเกิด bug แสดง หมายเลขหน้า เยอะแยะไปหมด ตัวอย่าง Coding :
โค้ด: เลือกทั้งหมด
{{$airport->appends(['search'=>request()->query('search')])->links()}} <!-- เอาคำว่า search ของ Query string จาก URL /searchAirport/search .... -->
<!-- .... มาต่อท้าย links() , ที่เราค้นหา เช่น พวก ชื่อที่ตั้งสนามบิน , .... -->
<!-- .... ส่งมาจาก request() แล้วตามด้วย ชื่อ Query string ก็คือ search ... -->
<!-- .... แล้ว เอามาต่อด้วย links() หรือ paginate(หมายเลขหน้า) .... -->
<!-- .... ถ้าไม่เอามาต่อท้าย จะเกิด bug แสดง หมายเลขหน้า เยอะแยะไปหมด --
Step 8 - ให้ลองทำการค้นหา โดยป้อนข้อมูล ชื่อ สนามบินสุวรรณภูมิ ลงไป
Step 9 - ก็จะมีแสดงข้อมูลตรง URL , หลังจากส่งค่า search ลงไปใน URL , ส่งในรูปแบบ Method GET ไป
ผลลัพธ์ที่ได้
ข้อสรุป
สรุปโดยรวมแล้ว การทำระบบค้นหาข้อมูล ใน Laravel Framework นั้น , มีประโยชน์สำหรับผู้ที่ต้องจะศึกษาหรือเอาไปพัฒนาต่อยอดในด้านอื่นๆ , หากต้องการศึกษาบทเรียนเพิ่มเติม เกี่ยวกับ Laravel Framework สามารถศึกษาได้จากบทเรียนนี้
แหล่งอ้างอิงข้อมูล
https://www.codespeaker.com/laravel-framework/simple-and-advanced-search-in-laravel-5/
https://www.youtube.com/watch?v=KWnmOBkHzUo