สำหรับการสร้าง CRUD (Create, Read, Update, Delete) ใน Laravel มีขั้นตอนดังนี้:
-
สร้างโมเดล (Model) และตารางในฐานข้อมูล (Database Table) โดยใช้คำสั่ง artisan:
php artisan make:model Product -m
คำสั่งนี้จะสร้างโมเดล Product พร้อมกับ Migration สำหรับสร้างตาราง products ในฐานข้อมูล
-
แก้ไขไฟล์ Migration เพื่อกำหนดฟิลด์ที่ต้องการสร้างในตารางโดยเพิ่มฟิลด์ต่างๆ ที่ต้องการใน function up():
public function up() { Schema::create('products', function (Blueprint $table) { $table->id(); $table->string('name'); $table->text('description')->nullable(); $table->float('price'); $table->timestamps(); }); }
-
สร้าง Controller สำหรับ CRUD โดยใช้คำสั่ง artisan:
php artisan make:controller ProductController --resource
คำสั่งนี้จะสร้าง Controller ชื่อ ProductController พร้อมกับ Resourceful Routes สำหรับ CRUD
-
กำหนด Route ในไฟล์ web.php โดยใช้ Route::resource():
Route::resource('products', 'ProductController');
-
สร้าง View สำหรับแสดงผล โดยสร้างไฟล์ในโฟลเดอร์ resources/views/products/ ตามชื่อของฟังก์ชัน (index.blade.php, create.blade.php, edit.blade.php, show.blade.php)
-
แก้ไขฟังก์ชันใน Controller ตามต้องการเพื่อดึงข้อมูลจากฐานข้อมูลและส่งไปยัง View ที่เกี่ยวข้อง
public function index() { $products = Product::all(); return view('products.index', compact('products')); }
public function create() { return view('products.create'); }
public function store(Request $request) { $product = new Product; $product->name = $request->name; $product->description = $request->description; $product->price = $request->price; $product->save(); return redirect('/products'); }
public function edit($id) { $product = Product::find($id); return view('products.edit', compact('product')); }
public function update(Request $request, $id) { $product = Product::find($id); $product->name = $request->name; $product->description = $request->description; $product->price = $request->price; $product->save(); return redirect('/products'); }
public function destroy($id) { $product = Product::find($id); $product->delete(); return redirect('/products'); }
-
ใช้ Blade Template สำหรับแสดงผลใน View โดยใช้ตัวแปรที่ถูกส่งมาจาก Controller ในการแสดงผล
<!-- index.blade.php --> @foreach ($products as $product) <div>{{ $product->name }}</div> <div>{{ $product->price }}</div> @endforeach
<!-- create.blade.php --> <form method="POST" action="/products"> @csrf <input type="text" name="name"> <textarea name="description"></textarea> <input type="number" name="price"> <button type="submit">Create</button> </form>
<!-- edit.blade.php --> <form method="POST" action="/products/{{ $product->id }}"> @csrf @method('PUT') <input type="text" name="name" value="{{ $product->name }}"> <textarea name="description">{{ $product->description }}</textarea> <input type="number" name="price" value="{{ $product->price }}"> <button type="submit">Update</button> </form>
<!-- show.blade.php --> <div>{{ $product->name }}</div> <div>{{ $product->description }}</div> <div>{{ $product->price }}</div> <form method="POST" action="/products/{{ $product->id }}"> @csrf @method('DELETE') <button type="submit">Delete</button> </form>
นี่คือขั้นตอนสำหรับการสร้าง CRUD ใน Laravel หากมีข้อสงสัยเพิ่มเติมสามารถดูเอกสารเพิ่มเติมได้ที่ https://laravel.com/docs/8.x/controllers#resource-controllers