ඒකකය 4: Models සහ Controllers

Laravel, Model-View-Controller (MVC) නම් වාස්තු විද්‍යාත්මක රටාව (architectural pattern) අනුගමනය කරයි. මෙමගින් යෙදුමේ ව්‍යාපාරික තර්කනය (business logic), දත්ත (data) සහ ඉදිරිපත් කිරීමේ ස්තරය (presentation layer) එකිනෙකින් වෙන් කර තැබීම පහසු කරයි.

1. Models සහ Controllers යනු මොනවාද?

  • Model: Model එක මගින් ඔබේ දත්ත සමුදා වගුව (database table) නිරූපණය කරයි. දත්ත සමුදායෙන් දත්ත ලබාගැනීම (fetch), ඇතුළත් කිරීම (insert), යාවත්කාලීන කිරීම (update) සහ මැකීම (delete) වැනි සියලුම දත්ත හා සම්බන්ධ මෙහෙයුම් සිදුකරන්නේ Model එක හරහාය. අපගේ ව්‍යාපෘතියේ, `Student` Model එක මගින් `students` නම් දත්ත සමුදා වගුව නිරූපණය කරනු ඇත.
  • Controller: Controller එක යනු Model සහ View අතර මැදිහත්කරුවා ලෙස ක්‍රියා කරයි. පරිශීලක ඉල්ලීම් (user requests) භාරගැනීම, අවශ්‍ය දත්ත ලබාගැනීමට Model එකට දැන්වීම, සහ එම දත්ත View එකට යොමු කිරීම Controller හි කාර්යභාරයයි.

2. `Student` Model එක සෑදීම

අපි `students` table එක දැනටමත් migration එකක් හරහා සාදා ඇත. දැන් එම table එක සමඟ සන්නිවේදනය කිරීමට `Student` නමින් Model එකක් සාදමු. Terminal එකේ පහත Artisan විධානය ක්‍රියාත්මක කරන්න.

php artisan make:model Student

මෙමගින් `app/Models/` ෆෝල්ඩරය තුළ `Student.php` නමින් නව ගොනුවක් සෑදේ. දැනට අපට මෙම ගොනුව වෙනස් කිරීමට අවශ්‍ය නැත. Laravel ස්වයංක්‍රීයවම Model නාමයේ (`Student`) ඒක වචන, කුඩා අකුරු ආකාරය (`student`) බහු වචන බවට (`students`) පත් කර අදාළ table එක හඳුනා ගනී.

3. `StudentController` එක සෑදීම

ශිෂ්‍ය දත්ත කළමනාකරණයට අදාළ සියලුම තර්කනය (logic) හැසිරවීමට දැන් අපි Controller එකක් සාදමු.

php artisan make:controller StudentController

මෙම විධානය මගින් `app/Http/Controllers/` ෆෝල්ඩරය තුළ `StudentController.php` නමින් නව ගොනුවක් සෑදේ. CRUD මෙහෙයුම් සඳහා අවශ්‍ය ශ්‍රිත (methods) අපි ඉදිරි පාඩම් වලදී මෙයට එක් කරමු.

4. Routes අර්ථ දැක්වීම (Defining Routes)

අවසාන වශයෙන්, පරිශීලකයෙක් වෙබ් බ්‍රව්සරයේ URL එකකට පිවිසුණු විට කුමන Controller method එක ක්‍රියාත්මක විය යුතුද යන්න අප Laravel වෙත පැවසිය යුතුය. මෙය `routes/web.php` ගොනුව තුළ සිදු කරයි.

පළමුව, `web.php` ගොනුවේ ඉහළින්ම අපගේ `StudentController` එක import කරගනිමු.

use App\Http\Controllers\StudentController;

ඉන්පසු, ශිෂ්‍යයින්ගේ ලැයිස්තුව පෙන්වීම සඳහා route එකක් අර්ථ දක්වමු. දැනට, මෙම route එකෙන් කිසිවක් සිදු නොවූවත්, ඉදිරි පාඩම් සඳහා මෙය පදනම වේ.

Route::get('/students', [StudentController::class, 'index']);

මෙයින් කියවෙන්නේ යමෙකු `/students` යන URL එකට GET request එකක් එව්වොත්, `StudentController` එකේ ඇති `index` නම් method එක ක්‍රියාත්මක කරන ලෙසයි.

දැන් අපගේ යෙදුමේ මූලික සැකිල්ල සූදානම්! ඊළඟ ඒකකයේ සිට අපි දත්ත ඇතුළත් කිරීමට අවශ්‍ය පෝරමය (form) සෑදීම ආරම්භ කරමු. 👨‍💻