Module 4 – Database සහ Models

මේ කොටසේදී, අපි අපේ Pizza Ordering System එකට අවශ්‍ය database tables (වගු) නිර්මාණය කරනවා. මේ සඳහා Laravel හි **Migrations** සහ **Models** කියන concepts දෙක අපි පාවිච්චි කරනවා.

Migrations යනු අපේ database එකේ ව්‍යුහය (structure) කේත (code) ලෙස පාලනය කිරීමේ ක්‍රමයකි.
Models යනු අපේ Laravel application එක සහ database table එක අතර සම්බන්ධය ගොඩනගන file එකකි.

පියවර 1: `pizzas` Table එක නිර්මාණය කිරීම 🍕

අපේ pizza වර්ග සහ ඒවායේ මිල ගබඩා කර තබාගැනීමට `pizzas` නමින් table එකක් අවශ්‍යයි. මේ සඳහා අපි model එක සහ migration file එක එකවර සාදාගමු.

Terminal එකේ පහත command එක run කරන්න.

php artisan make:model Pizza -m

මෙහි `make:model Pizza` මගින් `app/Models/Pizza.php` නමින් model එකක්ද, `-m` flag එක නිසා `database/migrations/` ෆෝල්ඩරය තුළ අදාල migration file එකක්ද සෑදේ.

දැන් `database/migrations/` ෆෝල්ඩරයේ අලුතින් සෑදුනු `..._create_pizzas_table.php` file එක open කර, එහි `up()` function එක පහත පරිදි සකසන්න.

public function up()
{
    Schema::create('pizzas', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->decimal('price', 8, 2);
        $table->timestamps();
    });
}

මෙහි `$table->string('name');` මගින් pizza එකේ නම සඳහා ද, `$table->decimal('price', 8, 2);` මගින් මිල සඳහා ද columns (තීරු) සෑදේ.


පියවර 2: `orders` Table එක නිර්මාණය කිරීම 🧾

පරිශීලකයින්ගේ ඇණවුම් (orders) ගබඩා කිරීමට `orders` නමින් table එකක් අවශ්‍යයි. ඉහත ආකාරයටම model සහ migration file එක සාදාගමු.

php artisan make:model Order -m

දැන් අලුතින් සෑදුනු `..._create_orders_table.php` file එකේ `up()` function එක මෙසේ සකසන්න.

public function up()
{
    Schema::create('orders', function (Blueprint $table) {
        $table->id();
        $table->foreignId('user_id')->constrained()->onDelete('cascade');
        $table->foreignId('pizza_id')->constrained()->onDelete('cascade');
        $table->integer('quantity');
        $table->string('status')->default('Pending'); // Pending, Approved, Rejected
        $table->timestamps();
    });
}

මෙහි `user_id` මගින් order එක දැමූ user වද, `pizza_id` මගින් ඇණවුම් කළ pizza එකද හඳුනාගනී. `status` මගින් ඇණවුමේ තත්ත්වය (උදා: Pending) සටහන් කරගනී.


පියවර 3: Migrations Run කිරීම ⚡

දැන් අපි මේ සෑදූ migration files (blueprints) භාවිතයෙන් database එකේ tables ටික නිර්මාණය කරගමු. මේ සඳහා නැවතත් `migrate` command එක run කරන්න.

php artisan migrate

මෙය run වූ පසු, phpMyAdmin වෙත ගොස් බැලුවහොත්, ඔබේ database එකේ අලුතින් `pizzas` සහ `orders` නමින් tables දෙකක් සෑදී ඇති බව ඔබට පෙනේවි.


නියමයි! අපි අපේ යෙදුමට අවශ්‍ය database ව්‍යුහය සාර්ථකව නිර්මාණය කළා. ඊළඟට අපි user ට pizza ඇණවුම් කිරීමට අවශ්‍ය interface එක හදමු.

« පෙර පාඩම: Authentication ඊළඟ පාඩම: User Side (Ordering) »