1. CRUD คืออะไร?
CRUD ย่อมาจาก 4 การทำงานหลัก
| CRUD | ความหมาย | Laravel |
|---|---|---|
| C — Create | เพิ่มข้อมูล | create() + store() |
| R — Read | อ่าน/แสดงข้อมูล | index() / show() |
| U — Update | แก้ไขข้อมูล | edit() + update() |
| D — Delete | ลบข้อมูล | destroy() |
ตัวอย่าง คือระบบ Portfolio
2. “เขียน CRUD ได้” ต้องทำอะไรเป็นบ้าง?
สมมติเราจะสร้าง Portfolio CRUD
ขั้นที่ 1 — สร้าง Database
ต้องรู้จัก Migration
php artisan make:migration create_portfolios_table
กำหนดข้อมูล เช่น
Schema::create('portfolios', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('description')->nullable();
$table->string('image')->nullable();
$table->timestamps();
});
แล้วรัน php artisan migrate
3. สร้าง Model
php artisan make:model Portfolio
ใน Model
| class Portfolio extends Model { protected $fillable = [ 'title', 'description', 'image', ]; } |
ต้องเข้าใจว่า Model ใช้สำหรับติดต่อกับ Database
เช่น
Portfolio::all(); คือ ดึงข้อมูล Portfolio ทั้งหมด
4. สร้าง Resource Controller
php artisan make:controller PortfolioController --resource
Laravel จะสร้าง 7 methods ให้เรา
index()
create()
store()
show()
edit()
update()
destroy()
นี่คือ หัวใจสำคัญของ CRUD Laravel
5. ทำ Read — แสดงรายการ
Controller:
public function index()
{
$portfolios = Portfolio::latest()->get();
return view('backend.portfolio.index', compact('portfolios'));
}
Blade:
@foreach ($portfolios as $portfolio)
{{ $portfolio->title }}
{{ $portfolio->description }}
@endforeach
เมื่อเปิด /portfolio
ก็เห็นข้อมูลจาก Database นี่คือ R — Read
6. ทำ Create — เพิ่มข้อมูล
Controller:
public function create()
{
return view('backend.portfolio.create');
}
สร้าง Form:
< form action="{{ route('portfolio.store') }}" method="POST">
@csrf
< input type="#" name="title" >
< textarea name="description"> website
< button type="#">
Save
< /form>
เมื่อกด Save จะส่งไป
public function store(Request $request)
{
Portfolio::create([
'title' => $request->title,
'description' => $request->description,
]);
return redirect()
->route('portfolio.index')
->with('success', 'บันทึกข้อมูลสำเร็จ');
}
นี่คือ C — Create
7. ทำ Update — แก้ไขข้อมูล
หน้า Edit:
public function edit($id)
{
$portfolio = Portfolio::findOrFail($id);
return view(
'backend.portfolio.edit',
compact('portfolio')
);
}
Form:
< form action="{{ route('portfolio.update', $portfolio->id) }}" method="POST" >
@csrf
@method('PUT')
< input
type="text"
name="title"
value="{{ $portfolio->title }}" >
< button type="submit" >
Update
< /button>
< /form >
Controller:
public function update(Request $request, $id)
{
$portfolio = Portfolio::findOrFail($id);
$portfolio->update([
'title' => $request->title,
]);
return redirect()
->route('portfolio.index')
->with('success', 'แก้ไขข้อมูลสำเร็จ');
}
นี่คือ U — Update
8. ทำ Delete — ลบข้อมูล
Blade:
< form
action="{{ route('portfolio.destroy', $portfolio->id) }}"
method="POST" >
@csrf
@method('DELETE')
< button type="submit" >
Delete
< /button >
< /form >
Controller:
public function destroy($id)
{
$portfolio = Portfolio::findOrFail($id);
$portfolio->delete();
return redirect()
->route('portfolio.index')
->with('success', 'ลบข้อมูลสำเร็จ');
}
นี่คือ D — Delete