လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Laravel 7 Infiniite အဆင့်ခွဲခြားမှုအကောင်အထည်ဖော်မှုနည်းလမ်းများနှင့်အကောင်းဆုံးအလေ့အကျင့်များ

Laravel 7 Infiniite အဆင့်ခွဲခြားမှုအကောင်အထည်ဖော်မှုနည်းလမ်းများနှင့်အကောင်းဆုံးအလေ့အကျင့်များ

gitbox 2025-06-28

မိတ်ဆက်ပေး

Laravel သည်လူကြိုက်များသော PHP Development Framework ဖြစ်သည်။ Infinite level classification သည်ဒေတာတစ်ခုစီကိုသစ်ပင်များဖွဲ့စည်းရန်နည်းလမ်းတစ်ခုဖြစ်သည်။ အကန့်အသတ်မဲ့ခွဲခြားသတ်မှတ်ခြင်းသည် applications applications များ၌သတင်းများခွဲခြားခြင်း, ထုတ်ကုန်ခွဲခြားခြင်းစသည်ဖြင့်တွေ့ရသည်။

အကောင်အထည်ဖော်မှုနည်းလမ်း

ဒေတာဘေ့စ်စားပွဲတင်ဒီဇိုင်း

Infinite-level classification ကိုအကောင်အထည်ဖော်ရန်ကျွန်ုပ်တို့သည်ဒေတာဘေ့စ်စားပွဲများကိုဒီဇိုင်းဆွဲရန်လိုအပ်သည်။ အသုံးများသောဒီဇိုင်းနည်းလမ်းမှာ ID နှင့် Parent_id ကိုသုံးရန်ဖြစ်သည်။ ID အကွက်ကို node တစ်ခုချင်းစီကိုထူးခြားစွာဖော်ထုတ်ရန်အသုံးပြုသည်။ Parent_ID field ကို node ၏မိဘ node ကိုညွှန်ပြရန်အသုံးပြုသည်။ အမြစ် node ၏ parent_id သည်များသောအားဖြင့် 0 ဖြစ်သည်။

 CREATE TABLE categories (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    parent_id INT DEFAULT 0
);

ဒီဥပမာမှာ ID, NAME နဲ့ Parent_id လယ်ကွင်းတွေနဲ့အမျိုးအစားတစ်ခုဖန်တီးထားပါတယ်။ ID အကွက်သည်အလိုအလျောက်တိုးပွားလာသောမူလတန်းသော့တစ်ခုဖြစ်သည်, အမည်ခွဲခြားသတ်မှတ်ခြင်း၏အမည်ကိုခွဲခြားရန်အမည်ကိုအသုံးပြုသည်။

ဒေတာဘေ့စ်စုံစမ်းမှု

သတ်မှတ်ထားသောအမျိုးအစားတစ်ခု၏အမျိုးအစားခွဲများအားလုံးကိုရယူရန်ကျွန်ုပ်တို့သည် requary query များကိုသုံးနိုင်သည်။ Laravel's eloquent Orm ကို အသုံးပြု. requary ည့်သည်ဆိုင်ရာမေးမြန်းမှုအတွက်နမူနာကုဒ်ဖြစ်သည်။

 class Category extends Model
{
    public function children()
    {
        return $this->hasMany(Category::class, 'parent_id', 'id');
    }

    public function descendants()
    {
        return $this->children()->with('descendants');
    }
}

ဤဥပမာတွင်ကျွန်ုပ်တို့သည်ကလေးများနှင့်အမျိုးအစားမော်ဒယ်များ၏မျိုးဆက်များအသင်းများကိုသတ်မှတ်ခြင်းနှင့်အသင်းမျိုးဆက်များကိုဆန့်ကျင်သည်။ ကလေးများသည်လက်ရှိခွဲခြားခြင်း၏တိုက်ရိုက်ခွဲစိတ်မှုအားလုံးကိုတိုက်ရိုက်ခွဲထားရန်နှင့်မျိုးဆက်သစ်များသည်လက်ရှိခွဲခြားသည့်မျိုးဆက်သစ်များအားလုံးကိုပြန်လည်ရောက်ရှိစေသည်။

အမျိုးအစားစာရင်းစာရင်းကိုပြပါ

ကြည့်ရှုရန်စာရင်းတစ်ခုကိုကြည့်ရှုရန်ကျွန်ုပ်တို့သည် requary view ကိုသုံးနိုင်သည်။ ဤတွင် Blade Template Engine ကို အသုံးပြု. နမူနာကုဒ်ဖြစ်သည်။

 @foreach ($categories as $category)
    {{ $category->name }}
    @if ($category->children->count())
        @include('categories.partial.list', ['categories' => $category->children])
    @endif
@endforeach

ဤဥပမာတွင် classification list ကိုပြသရန် @foreach tag ကိုအသုံးပြုသည်။ အမျိုးအစားတစ်ခုစီအတွက်အမျိုးအစားအမျိုးအစားအမည်ကို ဦး စွာပြပြီးအမျိုးအစားခွဲများရှိမရှိစစ်ဆေးပါ။ Subclass တစ်ခုရှိပါကကျွန်ုပ်တို့သည်တစ်စိတ်တစ်ပိုင်းမြင်ကွင်းကိုမိတ်ဆက်ပေးရန် @inincleud ညွှန်ကြားချက်ကို အသုံးပြု. Subclass သို့လွှဲပြောင်းပေးသည်။

နိဂုံးချုပ်အားဖြင့်

ဤဆောင်းပါးသည် Laravel framework တွင် infinite-level classification ကိုအကောင်အထည်ဖော်ရန်နည်းလမ်းကိုမိတ်ဆက်ပေးသည်။ ပထမ ဦး စွာကျွန်ုပ်တို့သည်ခွဲခြားထားသောသတင်းအချက်အလက်များကိုသိမ်းဆည်းရန်ဒေတာဘေ့စ်စားပွဲတစ်ခုကိုဒီဇိုင်းပြုလုပ်ထားပြီး Eloquent orm ကိုပြန်လည်ပြုပြင်ခြင်းအတွက်အသုံးပြုသည်။ Infinite level classification သည်ကျွန်ုပ်တို့အားအချက်အလက်များကိုပိုမိုကောင်းမွန်စွာ စုစည်း. စီမံခန့်ခွဲနိုင်အောင်ကူညီနိုင်သည့်အလွန်လက်တွေ့ကျသောအင်္ဂါရပ်တစ်ခုဖြစ်သည်။