วิธีการ edit โดยผ่านตัว Model Laravel Framework
Step 1 - ให้เข้าไปที่ route/web.php , ให้ไปตั้งค่า Routing สำหรับ edit , เพื่อแสดงข้อมูลที่ต้องการจะแก้ไข
- 121.JPG (17.59 KiB) Viewed 4631 times
ตัวอย่าง Code :
โค้ด: เลือกทั้งหมด
Route::get('/editAirline/{id}', 'Controller_show_airline@edit');
Step 2 - ให้เข้าไปที่ Folder resources\views และทำการสร้าง File EditAirline.blade.php , เพื่อทำการสร้าง Form สำหรับการแสดงข้อมูล
ในส่วนที่ต้องการจะแก้ไขข้อมูล
- 122.JPG (32.99 KiB) Viewed 4631 times
ตัวอย่าง Code Form EditAirline.blade.php:
โค้ด: เลือกทั้งหมด
<div class="table-responsive">
<h2>แก้ไขตารางสายการบิน</h2>
<form action="/updateAirline/{id}" method="post" enctype="multipart/form-data"> <!-- enctype="multipart.... ไว้สำหรับการ Upload ข้อมูล -->
{{csrf_field()}}
<div class="form-group">
<label for="name_airline">ชื่อสายการบิน</label>
<input type="text" class="form-control" name="name_airline" id="name_airline" placeholder="name_airline" value="">
</div>
<div class="form-group">
<label for="name_comp">ชื่อบริษัทสายการบิน</label>
<input type="text" class="form-control" name="name_comp" id="name_comp" placeholder="name_comp" value="">
</div>
<h2>Current Logo</h2>
<div>
<img src="" alt="" width="150px" height="150px">
</div>
<div class="form-group">
<label for="image">เลือก File ภาพ</label>
<input type="file" class="form-control" name="image_name" id="image">
</div>
<button type="submit" name="submit" class="btn btn-success">Submit</button>
</form>
</div>
Step 3 - - จากนั้นให้เข้าไปที่ app\Http\Controllers\Controller_show_airline.php ที่เราได้ทำการสร้างเอาไว้เรียบร้อยแล้ว
Step 4 - - แล้วให้ไปที่ Function edit() , เพื่อจะต้องการให้แสดงข้อมูลในส่วนที่ต้องการจะแก้ไข , โดยมีการโยนค่า editAirline เข้าไปทำงานในหน้า EditAirline.blade.php , ดัง Code ตัวอย่างนี้
- 123.JPG (34.78 KiB) Viewed 4631 times
ตัวอย่าง Code Function edit() :
โค้ด: เลือกทั้งหมด
public function edit($id)
{
$editAirline = Airline::find($id);
//dd($editAirline);
return view('EditAirline')->with('editAirline',$editAirline);
}
Step 5 - ให้กลับไปหน้า Form EditAirline.blade.php , เพื่อทำการใส่คำสั่ง {{$editAirline->colums}} เพื่อที่จะเอาไว้ในแสดงข้อมูลในส่วนที่ต้องการแก้ไข , แล้วใช้คำสั่ง asset ในการเข้าถึงรูปภาพที่ต้องการจะแก้ไขด้วย
- 124.JPG (125.46 KiB) Viewed 4631 times
ตัวอย่าง Code Form EditAirline.blade.php มีการแสดงข้อมูลที่ต้องการแก้ไข :
โค้ด: เลือกทั้งหมด
<div class="table-responsive">
<h2>แก้ไขตารางสายการบิน</h2>
<form action="/updateAirline/{{$editAirline->id}}" method="post" enctype="multipart/form-data"> <!-- enctype="multipart.... ไว้สำหรับการ Upload ข้อมูล -->
{{csrf_field()}}
<div class="form-group">
<label for="name_airline">ชื่อสายการบิน</label>
<input type="text" class="form-control" name="name_airline" id="name_airline" placeholder="name_airline" value="{{$editAirline->name_airline}}">
</div>
<div class="form-group">
<label for="name_comp">ชื่อบริษัทสายการบิน</label>
<input type="text" class="form-control" name="name_comp" id="name_comp" placeholder="name_comp" value="{{$editAirline->name_comp}}">
</div>
<h2>Current Logo</h2>
<div>
<img src="{{asset('storage')}}/airline_image/{{$editAirline->image}}" alt="" width="150px" height="150px">
</div>
<div class="form-group">
<label for="image">เลือก File ภาพ</label>
<input type="file" class="form-control" name="image_name" id="image">
</div>
<button type="submit" name="submit" class="btn btn-success">Submit</button>
</form>
</div>
Step 6 - ให้กลับไปที่ resources\views\showAirline.blade.php , แล้วทำการเพิ่มปุ่มแก้ไขลงไป , โดยมีการส่งค่า id ไปทำงานที่ Route ด้วย , ให้โดยไปวิ่งไปทำงานที่ Controll_show_ariline.php , แล้วไปทำงานที่ Function edit()
ตัวอย่าง Code ปุ่มแก้ไข :
โค้ด: เลือกทั้งหมด
<td>
<a href="/editAirline/{{$airlines->id}}" class="btn btn-primary">แก้ไข</a>
</td>
Step 7 - จากนั้นก็ให้ลองทำการกดปุ่มแก้ไขดู
- 125.JPG (13.89 KiB) Viewed 4631 times
Step 8 - จะเห็นว่ามีการส่งค่า id ผ่านทาง URL
- 126.JPG (11.19 KiB) Viewed 4631 times
ผลลัพธ์ที่ได้
- 127.JPG (66.58 KiB) Viewed 4631 times
วิธีการ update โดยผ่านตัว Model Laravel Framework
Step 1 - ให้เข้าไปที่ route/web.php , ให้ไปตั้งค่า Routing สำหรับ update , เพื่อบันทึกข้อมูลที่ต้องการจะแก้ไข
ตัวอย่าง Code :
โค้ด: เลือกทั้งหมด
Route::post('/updateAirline/{id}', 'Controller_show_airline@update');
Step 2 - จากนั้นให้เข้าไปที่ app\Http\Controllers\Controller_show_airline.php ที่เราได้ทำการสร้างเอาไว้
Step 3 - แล้วให้ไปที่ Function update แล้วทำการรับค่า request เข้ามาเก็บไว้ในตัวแปร , จากนั้นก็ทำการบันทึกข้อมูล ลง database
- 128.JPG (44.28 KiB) Viewed 4631 times
ตัวอย่าง Code Function update() :
โค้ด: เลือกทั้งหมด
public function update(Request $request, $id)
{
$request->validate([
'name_airline' => 'required|unique:airlines',
'name_comp' => 'required',
'image_name' => 'required|file|image|mimes:jpeg,png,jpg|max:5000'
]);
//------- Update Data to Table ----------------------->
if ($request->hasFile("image_name")) {
$editAirline = Airline::find($id);
$editAirline->name_airline = $request->name_airline;
$editAirline->name_comp = $request->name_comp;
$editAirline->save();
Session()->flash("success","Update ข้อมูลเรียบร้อยแล้ว !");
//ref - https://laravel.com/docs/7.x/eloquent#updates
//ถ้ามีการ เลือก File จาก name="image_name" ของ Form EditProductImage.php
$editAirline = Airline::find($id); //ค้นหา id เพื่อตรวจสอบ ว่า File มัน ตรงกัน หรือ ซ้ำกันไหม ?
$exists = Storage::disk('local')->exists("public/airline_image/".$editAirline->image); //ทำการตรวจสอบใน disk ว่า มี File อยู่ใน disk ตรงกันกับ file ที่เราเลือก ....
//... จาก image_name ไหม ? , ส่วน image มาจาก ชื่อ Fields ของฐานข้อมูล
if ($exists) { //ใช้ if ตรวจสอบว่า ถ้าตำแหน่ง File ภาพ มันตรงกันไหม ?
Storage::delete("public/airline_image/".$editAirline->image); //ให้ทำการลบภาพตัวเก่าออก แต่ชื่อ File ยังเหมือนเดิม
}
$request->image_name->storeAs("public/airline_image/",$editAirline->image); //เอาภาพใหม่ไปแทนที่ โดยรับค่ามาจาก name="image_name" จาก Form view
//ref - https://laravel.com/docs/7.x/filesystem#file-uploads
}
return redirect('/showAirline');
}
Step 4 - จากนั้นก็กลับไปที่หน้า resources\views\showAirline.blade.php , แล้วทำการคลิกปุ่มแก้ไขข้อมูล โดยจะมีการส่งค่า id ผ่าน Routing ไป , ล้วมีการวิ่งไปที่ Controller_show_airline.php , หลังจากนั้นก็วิ่งไปที่ Function edit() , เพื่อแสดงข้อมูลที่ต้องการแก้ไขก่อน
- 129.JPG (12.51 KiB) Viewed 4631 times
- 130.JPG (12.33 KiB) Viewed 4631 times
Step 5 - จากนั้นพอมาถึงหน้า resources\views\EditAirline.blade.php , ก็ให้ทำการเปลี่ยนแปลงข้อมูลเล็กน้อย , แล้วกดบันทึกข้อมูลลงไป , โดยจะมีการส่งค่า id ผ่าน Routing ไป , แล้วมีการวิ่งไปที่ Controller_show_airline.php , หลังจากนั้นก็วิ่งไปที่ Function update()
- 131.JPG (62.03 KiB) Viewed 4631 times
ผลลัพธ์ที่ได้
- 132.JPG (52.62 KiB) Viewed 4631 times
- 133.JPG (20.19 KiB) Viewed 4631 times
วิธีการ delete โดยผ่านตัว Model Laravel Framework
Step 1 - ให้เข้าไปที่ route/web.php , ให้ไปตั้งค่า Routing สำหรับ delete
ตัวอย่าง Code :
โค้ด: เลือกทั้งหมด
Route::get('/deleteAirline/{id}', 'Controller_show_airline@destroy');
Step 2 - จากนั้นก็กลับไปที่หน้า resources\views\showAirline.blade.php , แล้วทำการสร้างปุ่มลบข้อมูลมา , โดยจะมีการส่งค่า id ผ่าน Routing ไป , แล้วมีการวิ่งไปที่ Controller_show_airline.php , หลังจากนั้นก็วิ่งไปที่ Function destroy()
- 134.JPG (24.15 KiB) Viewed 4631 times
Step 3 - จากนั้นให้เข้าไปที่ app\Http\Controllers\Controller_show_airline.php ที่เราได้ทำการสร้างเอาไว้
Step 4 - แล้วมองหา Function destroy() , แล้วใส่คำสั่ง find() เพื่อหา id ที่ต้องการจะลบ , จากนั้นก็ใส่คำสั่ง Airline::destroy($id); เพื่อทำการลบข้อมูล ดังตัวอย่าง Code นี้
ตัวอย่าง Code Function destroy()
โค้ด: เลือกทั้งหมด
public function destroy($id)
{
$airline = Airline::find($id); //ค้นหา id เพื่อตรวจสอบว่า File ภาพที่ต้องการจะลบ มันตรงกันไหม ?
if ($airline->airflight_2->count()>0){
Session()->flash("alert","ไม่สามารถลบได้ เนื่องจากมีข้อมูลอยู่ในตารางเที่ยวบิน !");
return redirect()->back();
}
$exists = Storage::disk('local')->exists("public/airline_image/".$airline->image); //ทำการตรวจสอบใน disk ว่า มี File อยู่ใน disk ตรงกันกับ file ที่เราเลือก ....
//จาก image_name ไหม ? , ส่วน image มาจาก ชื่อ Fields ของฐานข้อมูล
if ($exists) { //ใช้ if ตรวจสอบว่า ถ้าตำแหน่ง File ภาพ มันตรงกันไหม ?
Storage::delete("public/airline_image/".$airline->image); //ให้ทำการลบภาพใน folder store/app/public/airline_image/ ออก
}
Airline::destroy($id);
Session()->flash("success","ลบข้อมูลเรียบร้อยแล้ว !");
return redirect('/showAirline');
}
Step 5 - จากนั้นก็กลับไปที่หน้า resources\views\showAirline.blade.php , แล้วทำการกดปุ่มลบข้อมูล
ผลลัพธ์ที่ได้
- 135.JPG (29.39 KiB) Viewed 4631 times
ข้อสรุป
ในการ Insert , Edit , Delete ผ่านตัว Model นั้น , จะต้องมีการส่งค่าผ่าน Routing , โดยเฉพาะ Edit , Delete ผ่านตัว Model , ซึ่งการ Inset , Edit , Delete นั้น มีความสะดวกสบายในการึ้ใช้งานง่ายกว่า , การเขียน Code php แบบเพียวๆซะอีก , ซึ่งจะช่วยให้การทำงานในการจัดการฐานข้อมูลรวดเร็วยิ่งขึ้น , โดยหลักการทำงานมีอยู่ 3 การทำงาน ที่ขาดไม่เลย คือ Model , Controller , Views ที่เป็นตัวค่อยประสานการทำงานให้เร็วมากยิ่งขึ้น , หากต้องการ
ศึกษาบทเรียนเพิ่มเติม Laravel Framework สามารถศึกษาได้จากบทเรียนนี้
แหล่งอ้างอิงข้อมูล
https://laravel.com/docs/8.x/eloquent#inserts
https://laravel.com/docs/8.x/eloquent#updates
https://seenual.com/laravel-5-4-การ-creating-reading-updating-and-deleting-crud-โดยใช้-controllers/