آفلاین
user-avatar

منو درختی tree menu

2 سال پیش
توسط Mohammad.H آپدیت شد
آفلاین
user-avatar
مجید فیضی ( 50 تجربه )
2 سال پیش

سلام
دوستان برای ایجاد منو درختی در لاراول با دیتابیس زیر چه باید کرد نمونه کد بدین ممنون میشم
name
slug
link
parent_id

بهترین پاسخ انتخاب شده توسط مجید فیضی
آفلاین
user-avatar
Igo
2 سال پیش

سلام دوست عزیز
شما باید یک جدول به اسم Menu در دیتابیس خودتون داشته باشید که علاوه بر اطلاعت مورد نیاز باید یکه رابطه با خود جدول Menu داشته باشه و یک فیلد به اسم ParentMenuId که این فیلد کلید خارجی خود جدول Menu به جدول Menu میشه. این فیلد حتما باید مقدار Null رو بپذیره
به این نوع رابطه ها میگن رابطه سلف جوین. و به کمک این رابطه شما میتونید که تمام روابط درختی رو پیاده سازی کنید.
حالا شما با استفاده از فیلد ParentMenuId و یک حلقه میتونید منوها رو بدرستی واکشی کنید و نمایش دهید فقط توجه داشته باشید که وقتی ParentMenuId مقدار Null داشته باشه منو ریشه است .
بحث دیگه ایی که اینجا مطرح هست اینه که شما توی تمام صفحاتتون باید منو هارو نمایش دهید و همه ما میدونیم که ارتباط با دیتابیس یک عمل سنگین و زمان بر حساب میشه. با این روند شما هر صفحه ایی رو که درخواست کنید یک کانکشن با دیتابیس بر قرار میشه و تمام منو ها رو واکشی میکنه
پیشنهاد شما برای رفع این مشکل چیه ؟؟؟؟

آفلاین
user-avatar
Igo ( 3869 تجربه )
2 سال پیش

سلام دوست عزیز
شما باید یک جدول به اسم Menu در دیتابیس خودتون داشته باشید که علاوه بر اطلاعت مورد نیاز باید یکه رابطه با خود جدول Menu داشته باشه و یک فیلد به اسم ParentMenuId که این فیلد کلید خارجی خود جدول Menu به جدول Menu میشه. این فیلد حتما باید مقدار Null رو بپذیره
به این نوع رابطه ها میگن رابطه سلف جوین. و به کمک این رابطه شما میتونید که تمام روابط درختی رو پیاده سازی کنید.
حالا شما با استفاده از فیلد ParentMenuId و یک حلقه میتونید منوها رو بدرستی واکشی کنید و نمایش دهید فقط توجه داشته باشید که وقتی ParentMenuId مقدار Null داشته باشه منو ریشه است .
بحث دیگه ایی که اینجا مطرح هست اینه که شما توی تمام صفحاتتون باید منو هارو نمایش دهید و همه ما میدونیم که ارتباط با دیتابیس یک عمل سنگین و زمان بر حساب میشه. با این روند شما هر صفحه ایی رو که درخواست کنید یک کانکشن با دیتابیس بر قرار میشه و تمام منو ها رو واکشی میکنه
پیشنهاد شما برای رفع این مشکل چیه ؟؟؟؟

آفلاین
user-avatar
مجید فیضی ( 50 تجربه )
2 سال پیش

این چیزی که شما فرمودین با دیتابیسی که من بالا گفتم مطابقت داره
بنده طریقه نوشتن کدشو میخوام
بهترین کد نویسی سریع برای این مورد رو بفرمایید

آفلاین
user-avatar
مهدی رستگار ( 15922 تجربه )
2 سال پیش
تخصص : توسعه دهنده frontend & backend

اگه منو درختی میخواین که تا n سطح زیرمنو داشته باشه میتونید به لینک زیر مراجعه کنید درضمن نظرات دوستان هم در این مورد درست بود ولی گفتین نحوه کد نویسی میخواین تو این لینک کامل توضیح داده دمو هم داره میتونید نتیجه اش رو ببینید
https://itsolutionstuff.com/post/laravel-5-category-treeview-hierarchical-structure-example-with-demoexample.html

اینم لینک دمو :
http://demo.itsolutionstuff.com/category-tree-view

آفلاین
user-avatar
Mohammad.H ( 566 تجربه )
2 سال پیش

@sermajid3 از طریق تابع بازگشتی میتونید این کار رو بکنید. البته تابع بازگشتی که کوئری داخل loop همش تکرار نشه و فقط یکبار کوئری زده بشه و باقی کارها با foreach کردن آرایه دریافتی انجام بگیره.
https://www.phpzag.com/how-to-create-dynamic-tree-view-menu-in-php/

برای ارسال پاسخ باید وارد سایت شوید