📘 Module 5: Product Management (CRUD)

← Back to Course Outline

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 ක්‍රියාවලියයි.