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

ThinkPpP5 Infinitus အမျိုးအစားခွဲခြားမှုအကောင်အထည်ဖော်မှုအသေးစိတ်ရှင်းပြချက်နှင့်သင်္ကေတများ

gitbox 2025-08-05

Metherphp5 နှင့် Infinitus အမျိုးအစားခွဲခြားခြင်းအားအကောင်အထည်ဖော်ရန်အခြေခံနိဒါန်း

Infinitus အမျိုးအစားခွဲခြားမှုသည်အချက်အလက်များသို့မဟုတ်ဆောင်းပါးအမျိုးမျိုးအတွက်သင့်လျော်သောအချက်အလက်စီမံခန့်ခွဲမှုဆိုင်ရာအချက်အလက်စီမံခန့်ခွဲမှုဆိုင်ရာအမျိုးအစားခွဲခြားမှုနည်းလမ်းဖြစ်သည်။ ဤဆောင်းပါးသည် ThinitPp5 မူဘောင်မှတစ်ဆင့်အပြည့်အဝလုပ်ငန်းစဉ်နှင့်နမူနာစည်းမျဉ်းများကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုရှင်းပြပါမည်။

infinitus အမျိုးအစားခွဲခြားခြင်း၏အယူအဆနှင့်လျှောက်လွှာ

Infinitus အမျိုးအစားခွဲခြားမှုသည်ခွဲခြားမှုကိုအမျိုးအစားခွဲမျိုးစုံရှိရန်ခွင့်ပြုသည်။ subcregory တစ်ခုစီသည်လက်ဘိုင်းနှစ်ဖက်စလုံးတွင်ကိုယ်ပိုင်အမျိုးအစားများကိုဆက်ရှိနေနိုင်သည်။ ရှုပ်ထွေးသောခွဲခြားဆက်ဆံမှုများကိုစီမံခန့်ခွဲရန်အတွက်ဤဖွဲ့စည်းပုံသည်ပြောင်းလွယ်ပြင်လွယ်။ အဆင်ပြေသည်။

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

Infinitus အမျိုးအစားခွဲခြားမှုကိုအကောင်အထည်ဖော်ရန်အတွက်သင်သည်အောက်ပါအကွက်များပါ 0 င်သည့်ခွဲခြားသတ်မှတ်ချက်ကိုဖန်တီးရန်လိုအပ်သည်။

  • ID: မူလတန်းသော့, ခွဲခြားသတ်မှတ်ထူးခွားတဲ့အမှတ်အသား
  • အမည်: ခွဲခြားအမည်
  • parent_id: မိဘအတန်းအစား ID, သက်ဆိုင်ရာအမျိုးအစားကိုတူညီသောစားပွဲပေါ်မှာညွှန်ပြ

မော်ဒယ်အဓိပ္ပါယ်ဖွင့်ဆိုချက်

TherPPH5 တွင် Model Class ကိုအမျိုးအစားခွဲခြားရန်အချက်အလက်များကိုအသုံးပြုပါ။ အောက်ဖော်ပြပါဥပမာသည်အမျိုးအစားမော်ဒယ်အမျိုးအစားများကိုသတ်မှတ်ပြီး,

 namespace app\index\model;
use think\Model;
class Category extends Model
{
    // စားပွဲပေါ်မှာအမည်ကိုသတ်မှတ်ပါ(ပုံမှန်စည်းမျဉ်းစည်းကမ်းတွေကိုတွေ့ဆုံခဲ့ကြပါ)
    protected $table = 'category';

    // လက်ရှိအမျိုးအစားခွဲခြားခြင်း၏တိုက်ရိုက်အမျိုးအစားခွဲကိုရယူပါ
    public function childrenCategories()
    {
        return $this->hasMany('Category', 'parent_id', 'id')
                    ->order('id', 'asc');
    }

    // အားဖြည့်မျိုးကွဲအားလုံးကိုရယူပါ,အမျိုးအစားခွဲအပါအ 0 င်အမျိုးအစားခွဲ
    public function allChildrenCategories()
    {
        return $this->childrenCategories()->with('allChildrenCategories');
    }
}

အထက်ဖော်ပြပါနည်းလမ်းသည် TakePpP ၏အသင်းပုံစံပုံစံကိုအသုံးပြုသည်။

Controller တွင်မော်ဒယ်စစ်ဆင်ရေးအမျိုးအစားအချက်အလက်များကိုခေါ်ဆိုခြင်း

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

 $categories = Category::where('parent_id', 0)->select();

foreach ($categories as $category) {
    $childrenCategories = $category->childrenCategories;
    // subclassing ဤနေရာတွင်လုပ်ငန်းများ၌နိုင်ပါတယ်
}

အကယ်. အမျိုးအစားတစ်ခု၏အမျိုးအစားခွဲများ (အဆင့်ခွဲခြားကဏ်အမျိုးအစားများအပါအ 0 င်) ၏အမျိုးအစားခွဲများအားလုံးရရှိရန်လိုအပ်ပါကသင်အသုံးပြုနိုင်သည်။

 $allChildrenCategories = $category->allChildrenCategories;

ဤနည်းလမ်းသည်ပိုမိုလုပ်ဆောင်မှုများဆက်လက်လုပ်ဆောင်နိုင်သည့်အပေါင်းအသင်းပုံစံများကိုစုဆောင်းခြင်းကိုပြန်လည်ရောက်ရှိစေသည်။

View Layer Classification Data ကိုပြန်ဆိုခြင်း

View တွင်အဆင့်ပေါင်းစုံခွဲခြားသတ်မှတ်သည့်အချက်အလက်များကိုပြသရန်အဆင့်ဆင့်တွင်ထစ်ချထားသည့် display ကို recursive function များမှတဆင့်အကောင်အထည်ဖော်နိုင်သည်။

 function renderCategories($categories, $indent = 0)
{
    foreach ($categories as $category) {
        echo str_repeat('    ', $indent);
        echo $category->name . '<br/>';
        renderCategories($category->childrenCategories, $indent + 1);
    }
}

renderCategories($categories);

ထို့အပြင် ThinkPhp5 Template English သည် Volist tag ကို အသုံးပြု. အမျိုးအစားများ recursive retering ကိုထောက်ပံ့သည်။

 <ul>
{volist name="categories" id="category"}
    <li>{$category.name}</li>
    {volist name="category.childrenCategories" id="child"}
        <ul>
            <li>{$child.name}</li>
            {include file="category_tree" /}
        </ul>
    {/volist}
{/volist}
</ul>

ဤနည်းလမ်းသည်ရိုးရှင်းလွယ်ကူပြီးထိန်းသိမ်းရန်လွယ်ကူသည်။

အကျဉ်းချုပ်

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

မကြာသေးမီ ဆောင်းပါးများ