📘 Module 5: Product Management (CRUD)
1. Create Product Model & Controller
CRUD operations සඳහා අවශ්ය Model, Controller, සහ Routes සකස් කරගනිමු.
පළමුව, Product Model එක සාදමු.
php artisan make:model Product
දෙවනුව, Product සඳහා වන Resource Controller එකක් සාදමු.
php artisan make:controller ProductController --resource
අවසාන වශයෙන්, routes/web.php file එකේ routes define කිරීමට Route::resource භාවිතා කරමු.
File: routes/web.php
use App\Http\Controllers\ProductController;
// ... other use statements
// Add this line for product routes
Route::resource('products', ProductController::class)->middleware(['auth', 'verified']);
middleware(['auth']) යෙදීමෙන්, login වූ user කෙනෙකුට පමණක් මෙම product pages වලට access කිරීමට හැකි බව අපි තහවුරු කරමු.
2. List All Products (Read) & Add Product Form (Create)
දැන් අපි සියලුම products පෙන්වන page එක සහ නව product එකක් එකතු කරන form එක සාදමු.
Controller Logic: app/Http/Controllers/ProductController.php
// Inside ProductController.php
use App\Models\Product; // Import the Product model
public function index()
{
$products = Product::all(); // Get all products from the database
return view('products.index', compact('products'));
}
public function create()
{
return view('products.create');
}
List Products View: resources/views/products/index.blade.php
@extends('layouts.app')
@section('content')
<div class="container">
<h1>Products</h1>
<a href="{{ route('products.create') }}" class="btn btn-primary mb-3">Add New Product</a>
<table class="table table-bordered">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Price</th>
<th>Quantity</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
@foreach ($products as $product)
<tr>
<td>{{ $product->id }}</td>
<td>{{ $product->name }}</td>
<td>{{ $product->price }}</td>
<td>{{ $product->quantity }}</td>
<td>
<!-- Action buttons will go here -->
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
@endsection
3. Edit and Delete Product Options (Update & Delete)
දැන් අපි product එකක් save කිරීමට, update කිරීමට, සහ delete කිරීමට අවශ්ය logic සහ views සකස් කරමු.
Controller Logic: ProductController.php
// Inside ProductController.php
use Illuminate\Http\Request; // Import Request class
// ... index() and create() methods ...
public function store(Request $request)
{
$request->validate([
'name' => 'required',
'price' => 'required|numeric',
'quantity' => 'required|integer',
]);
Product::create($request->all());
return redirect()->route('products.index');
}
// ... other methods ...
public function update(Request $request, Product $product)
{
$request->validate([
'name' => 'required',
'price' => 'required|numeric',
'quantity' => 'required|integer',
]);
$product->update($request->all());
return redirect()->route('products.index');
}
public function destroy(Product $product)
{
$product->delete();
return redirect()->route('products.index');
}
Mass Assignment: Product::create() වැඩ කිරීමට, app/Models/Product.php model එකේ $fillable property එක define කළ යුතුය.
// Inside Product.php model
protected $fillable = ['name', 'price', 'quantity'];
4. Sinhala Explanation of CRUD
CRUD යනු කුමක්ද?
CRUD යනු දත්ත සමග වැඩ කරන ඕනෑම application එකක ඇති මූලිකම ක්රියාවලි හතර සඳහා යෙදෙන කෙටි නමකි.
- C - Create (නිර්මාණය කිරීම): පද්ධතියට අලුතින් දත්ත ඇතුලත් කිරීම.
උදා: දුරකථනයට අලුත් contact number එකක් save කිරීම. - R - Read (කියවීම / බැලීම): පද්ධතියේ ඇති දත්ත බැලීම.
උදා: දුරකථනයේ ඇති සියලුම contact numbers list එක බැලීම. - U - Update (යාවත්කාලීන කිරීම): පද්ධතියේ දැනටමත් ඇති දත්තයක් වෙනස් කිරීම.
උදා: පරණ contact number එකක් edit කර අලුත් number එකක් දැමීම. - D - Delete (මැකීම): පද්ධතියේ ඇති දත්තයක් ඉවත් කිරීම.
උදා: දුරකථනයෙන් contact number එකක් delete කිරීම.
ඕනෑම data-driven application එකක හදවත වන්නේ මෙම CRUD ක්රියාවලියයි.