මොඩියුලය 2

දත්ත සමුදාය, Migrations සහ Eloquent Models


1 Migrations: දත්ත සමුදාය සඳහා Version Control

Migrations යනු ඔබගේ දත්ත සමුදාය සඳහා වන **"version control"** පද්ධතියක් වැනිය. Git භාවිතයෙන් ඔබගේ කේතයේ වෙනස්කම් කළමනාකරණය කරන්නා සේම, migrations මගින් ඔබගේ දත්ත සමුදායේ ව්‍යුහයේ (schema) වෙනස්කම් කළමනාකරණය කරයි.

phpMyAdmin වෙත ගොස් වගු සහ තීරු click කර සෑදීම වෙනුවට, අපි PHP class ගොනු ලෙස ඒවා නිර්වචනය කරමු. මෙමගින් කණ්ඩායමක් ලෙස වැඩ කිරීමේදී සහ ව්‍යාපෘතිය යාවත්කාලීන කිරීමේදී විශාල පහසුවක් ලැබේ.

ප්‍රධාන වාසි:
  • කණ්ඩායමේ ඕනෑම කෙනෙකුට එකම විධානයකින් (`php artisan migrate`) සම්පූර්ණ දත්ත සමුදායම සෑදිය හැක.
  • දත්ත සමුදායේ සිදුකළ සියලුම වෙනස්කම් ඉතිහාසයක් ලෙස ගබඩා වේ.
  • ව්‍යුහය වෙනස් කිරීම සහ ආපසු හැරවීම (rollback) ඉතා පහසුය.
2 Migration සහ Model එකවර සෑදීම

Laravel හිදී, සෑම දත්ත සමුදා වගුවකටම අදාළ **Model** එකක් ඇත. Model එක මගින් එම වගුව සමඟ කටයුතු කිරීමට Eloquent ORM වෙත පහසුකම් සපයයි. `php artisan make:model` විධානය සමඟ `-m` flag එක යෙදීමෙන්, අදාළ Model එක සහ Migration ගොනුව එකවරම සාදාගත හැක.

php artisan make:model Product -m

මෙම විධානය ක්‍රියාත්මක කළ විට:

  1. `app/Models/Product.php` නමින් Model ගොනුවක් සෑදේ.
  2. `database/migrations/` ෆෝල්ඩරය තුළ `..._create_products_table.php` නමින් Migration ගොනුවක් සෑදේ.
3 Migration ගොනුව තුළ Schema නිර්වචනය කිරීම

Migration ගොනුව තුළ `up()` නමින් function එකක් ඇත. දත්ත සමුදා ව්‍යුහය නිර්වචනය කරන්නේ මෙම function එක තුළය. Laravel හි Schema builder මගින් විවිධ වර්ගයේ තීරු (columns) පහසුවෙන් සෑදිය හැක.

උදාහරණයක් ලෙස, `..._create_products_table.php` ගොනුවේ `up()` function එක මෙසේ සකස් කළ හැක:

public function up(): void { Schema::create('products', function (Blueprint $table) { $table->id(); // Auto-incrementing primary key (BIGINT) $table->string('name'); $table->foreignId('category_id')->constrained()->onDelete('cascade'); $table->decimal('price', 8, 2); $table->integer('quantity'); $table->string('image')->nullable(); $table->timestamps(); // created_at and updated_at columns }); }

⭐ ප්‍රායෝගික පැවරුම: දත්ත සමුදාය සහ වගු නිර්මාණය කිරීම

පියවර 1: `.env` ගොනුව සකස් කිරීම

ඔබගේ Laravel ව්‍යාපෘතියේ root directory එකේ ඇති `.env` ගොනුව විවෘත කර, දත්ත සමුදා සම්බන්ධතා තොරතුරු ඇතුළත් කරන්න. පළමුව phpMyAdmin හි `supermarket_laravel` නමින් හිස් දත්ත සමුදායක් සාදන්න.

DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=supermarket_laravel DB_USERNAME=root DB_PASSWORD=

පියවර 2: අවශ්‍ය Models සහ Migrations සෑදීම

Command Prompt එකේ, ඔබගේ ව්‍යාපෘති ෆෝල්ඩරය තුළ සිට පහත විධාන එකින් එක ක්‍රියාත්මක කරන්න.

php artisan make:model Category -m php artisan make:model Product -m php artisan make:model Sale -m php artisan make:model SaleItem -m

පියවර 3: Migration ගොනු සංස්කරණය කිරීම

`database/migrations` ෆෝල්ඩරයේ ඇති අලුතින් සෑදුණු migration ගොනු විවෘත කර, ඉහත උදාහරණයේ පරිදි, අපගේ සුපිරි වෙළඳසැල් පද්ධතියට අවශ්‍ය සියලුම තීරු (columns) සහ සම්බන්ධතා (foreign keys) නිර්වචනය කරන්න.

පියවර 4: දත්ත සමුදාය Migrate කිරීම

සියලුම migration ගොනු සූදානම් කළ පසු, පහත විධානය ක්‍රියාත්මක කරන්න. මෙමගින් Laravel, ඔබගේ migration ගොනු කියවා, `.env` ගොනුවේ ඇති දත්ත සමුදාය තුළ අදාළ සියලුම වගු ස්වයංක්‍රීයව නිර්මාණය කරනු ඇත.

php artisan migrate

දැන් phpMyAdmin වෙත ගොස් `supermarket_laravel` දත්ත සමුදාය පරීක්ෂා කරන්න. ඔබ නිර්වචනය කළ සියලුම වගු (`users`, `products`, `categories`, etc.) එහි දිස්වන්නේ නම්, ඔබ මෙම මොඩියුලය සාර්ථකව නිම කර ඇත!

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