Eloquent Relationships සහ දත්ත සම්බන්ධ කිරීම
දත්ත සමුදායේ වගු අතර ඇති තාර්කික සම්බන්ධතා (උදා: නිෂ්පාදනයක් ප්රවර්ගයකට අයත් වීම) Eloquent Models තුළ නිර්වචනය කිරීමට සහ එමගින් සංකීර්ණ SQL JOIN queries වෙනුවට, ඉතා සරල සහ කියවීමට පහසු කේත ලිවීමට ඉගෙන ගැනීම.
Eloquent Relationships මගින් ඔබගේ දත්ත සමුදා වගු අතර ඇති සම්බන්ධතා Models තුළ functions ලෙස නිර්වචනය කිරීමට ඉඩ සලසයි. මෙමගින් ඔබට අදාළ දත්ත ඉතා පහසුවෙන් ලබාගත හැක.
උදාහරණයක් ලෙස, නිෂ්පාදනයක ප්රවර්ගයේ නම ලබාගැනීමට, SQL `JOIN` විධානයක් ලිවීම වෙනුවට, `$product->category->name` වැනි සරල syntax එකක් භාවිතා කළ හැක.
සම්බන්ධතා නිර්වචනය කරන්නේ අදාළ Model ගොනු තුළ, කිසිදු arguments නොගන්නා public function එකක් ලෙසය.
`Product` model (`app/Models/Product.php`):
සෑම නිෂ්පාදනයක්ම එක් ප්රවර්ගයකට **අයත් වේ** (`belongsTo`).
`Category` model (`app/Models/Category.php`):
සෑම ප්රවර්ගයකටම නිෂ්පාදන **කිහිපයක් තිබිය හැක** (`hasMany`).
පියවර 1: Models තුළ Relationships නිර්වචනය කිරීම
ඉහත උදාහරණ වල පෙන්වා ඇති පරිදි, ඔබගේ `Product.php` සහ `Category.php` model ගොනු විවෘත කර, `category()` සහ `products()` යන relationship functions දෙක නිර්වචනය කරන්න. එලෙසම, `Sale` සහ `User` අතර ද (`Sale` `belongsTo` `User`) සම්බන්ධතාවයක් ගොඩනගන්න.
පියවර 2: Controller එකෙන් අදාළ දත්ත ලබාගැනීම (Eager Loading)
නිෂ්පාදන ලැයිස්තුව පෙන්වන විට, එක් එක් නිෂ්පාදනය සඳහා වෙන වෙනම category එක ලබාගැනීමට query කිරීම (N+1 ගැටළුව) වෙනුවට, `with()` method එක භාවිතයෙන් සියලුම නිෂ්පාදන සමඟම ඒවාට අදාළ ප්රවර්ග දත්ත ද එකම query එකකින් ලබාගත හැක. මෙය **Eager Loading** ලෙස හැඳින්වේ.
`ProductController` හි `index()` method එක මෙසේ වෙනස් කරන්න:
පියවර 3: View එකේ Relationship එක භාවිත කිරීම
`products/index.blade.php` ගොනුවේ, ප්රවර්ගය පෙන්වන කොටස මෙසේ වෙනස් කරන්න. දැන් අපට `$product->category` ලෙස අදාළ Category model එකටත්, `$product->category->name` ලෙස එහි නමටත් සෘජුවම පිවිසිය හැක.
පියවර 4: නිෂ්පාදන ෆෝරමයට ගතික ඩ්රොප්ඩවුන් මෙනුවක් සෑදීම
`ProductController` හි `create()` method එක තුළ, සියලුම ප්රවර්ග ලබාගෙන, එය `create` view එකට යවන්න.
දැන් `products/create.blade.php` ගොනුවේ, ප්රවර්ග තෝරාගැනීමේ ඩ්රොප්ඩවුන් මෙනුව මෙලෙස සකසන්න:
මෙම පියවර `edit` view එක සඳහා ද සිදු කරන්න. දැන් ඔබට ප්රවර්ග කළමනාකරණ පිටුවෙන් නව ප්රවර්ග එකතු කළ විට, ඒවා ස්වයංක්රීයව නිෂ්පාදන ෆෝරමයේ දිස්වනු ඇත.