මොඩියුලය 4

නිෂ්පාදන කළමනාකරණය (Eloquent CRUD)


1 Resource Controllers සහ Routes

CRUD ක්‍රියාවලියක් සඳහා අවශ්‍ය වන routes (URL) සාමාන්‍යයෙන් 7ක් ඇත (index, create, store, show, edit, update, destroy). මේ සියල්ලම `routes/web.php` ගොනුවේ වෙන වෙනම ලිවීම වෙනුවට, Laravel මගින් **Resource Route** නමින් ඉතා පහසු ක්‍රමයක් ලබා දේ.

එකම එක කේත පේළියකින්, CRUD සඳහා අවශ්‍ය සියලුම routes ස්වයංක්‍රීයව නිර්වචනය කළ හැක. ඊට අදාළව, එම routes හසුරුවන සියලුම methods (functions) ඇතුළත් **Resource Controller** එකක් ද artisan විධානයකින් සාදාගත හැක.

Controller එක සෑදීම:
php artisan make:controller ProductController --resource
Route එක නිර්වචනය කිරීම (`routes/web.php`):
use App\Http\Controllers\ProductController; Route::resource('products', ProductController::class)->middleware('auth');
2 Controller තුළ Eloquent භාවිතය

අප දැන් සෑදූ `ProductController` එක (`app/Http/Controllers/ProductController.php`) තුළ, CRUD ක්‍රියාවලියට අදාළ හිස් methods 7ක් ඇත. Eloquent ORM භාවිතයෙන් දත්ත සමුදාය සමඟ කටයුතු කිරීම ඉතා සරල වේ.

  • දත්ත ලබාගැනීම (Read): `index()` method එක තුළ, `Product::all();` මගින් සියලුම නිෂ්පාදන ලබාගත හැක.
  • දත්ත ඇතුළත් කිරීම (Create): `store()` method එක තුළ, `Product::create($request->all());` මගින් ෆෝරමයෙන් එන දත්ත වගුවට ඇතුළත් කළ හැක.
  • දත්ත යාවත්කාලීන කිරීම (Update): `update()` method එක තුළ, පළමුව අදාළ නිෂ්පාදනය `Product::find($id);` මගින් සොයාගෙන, ඉන්පසු `$product->update($request->all());` මගින් යාවත්කාලීන කළ හැක.
  • දත්ත ඉවත් කිරීම (Delete): `destroy()` method එක තුළ, `$product->delete();` මගින් දත්ත ඉවත් කළ හැක.

⭐ ප්‍රායෝගික පැවරුම: නිෂ්පාදන සඳහා CRUD පද්ධතිය ගොඩනැගීම

පියවර 1: `ProductController` සහ Route සෑදීම

ඉහත පෙන්වා ඇති artisan විධානය සහ route කේතය ඔබගේ ව්‍යාපෘතියට ඇතුළත් කරන්න.

පියවර 2: නිෂ්පාදන ලැයිස්තුව (`index` view) සෑදීම

`ProductController` හි `index()` method එක තුළ, සියලුම නිෂ්පාදන ලබාගෙන, ඒවා `products.index` නම් view එකකට යවන්න.

// In ProductController.php -> index() $products = Product::latest()->get(); return view('products.index', compact('products'));

ඉන්පසු, `resources/views/products/index.blade.php` නමින් ගොනුවක් සාදා, Bootstrap table එකක් භාවිතයෙන් නිෂ්පාදන ලැයිස්තුව, "Add New", "Edit", "Delete" බොත්තම් සමඟ පෙන්වන්න.

පියවර 3: නිෂ්පාදන එකතු කිරීම (`create` & `store`)

`create()` method එක මගින් `products.create` view එක පෙන්වන්න. `resources/views/products/create.blade.php` ගොනුව තුළ, නව නිෂ්පාදනයක් ඇතුළත් කිරීමට HTML ෆෝරමයක් සාදන්න. (form action එක `route('products.store')` විය යුතුය).

`store()` method එක තුළ, ෆෝරමයෙන් එන දත්ත validate කර, Eloquent භාවිතයෙන් දත්ත සමුදායේ ගබඩා කර, නැවත `products.index` පිටුවට redirect කරන්න.

// In ProductController.php -> store() $request->validate([ 'name' => 'required', 'price' => 'required|numeric' ]); Product::create($request->all()); return redirect()->route('products.index')->with('success','Product created.');

පියවර 4: නිෂ්පාදන සංස්කරණය සහ ඉවත් කිරීම (`edit`, `update`, `destroy`)

ඉහත ක්‍රියාවලියට සමානව, `edit` සහ `update` methods මගින් නිෂ්පාදන යාවත්කාලීන කිරීමටත්, `destroy` method එක මගින් නිෂ්පාදන ඉවත් කිරීමටත් අවශ්‍ය කේතය සම්පූර්ණ කරන්න.

මෙම සියලුම පියවර අවසානයේ, ඔබට Laravel හි MVC රටාවට අනුව ගොඩනැගූ, සම්පූර්ණ ක්‍රියාකාරී නිෂ්පාදන කළමනාකරණ පද්ධතියක් ලැබෙනු ඇත.

‹‹ පෙර මොඩියුලය (Module 3) ඊළඟ මොඩියුලය (Module 5) ››