تیرداد
6 سال پیش توسط تیرداد مطرح شد
2 پاسخ

مشکل در گرفتن دسته و زیر دسته به همراه ایتمهای آن

من در حال طراحی یک سایت برای یک آژانس هواپیمایی هستم برای یکی از بخش های وب سایت نیازدارم لیست قارها و کشورها و شهرها و ... رو که قبلا به صورت پدر و فرزند در یک جدول ذخیره کردم رو در بیارم و در نهایت فقط کشورهایی رو نشون بدم که برای اونها تور ثبت شده .

صفحه من به این صورت کار می کنه که اگر من این آدرس رو فراخونی کنم
www.mywebsite.com/packages/asia

این فانکشن اجرا میشه

    public function packageOfLocation($slug)
    {
        $location = Location::whereSlug($slug)->hideHidden()->first();
        if(count($location->children)>0)
        {
            $this->getNotEmptyChildLocations($location);
            $categories = array_unique($this->childLocations);

        }else{
            $categories = $location;
        }

        return view('site.desktop.tour.packageList',compact('categories'));
    }

برای اینکه بتونم همه زیر مجموعه ها رو در بیارم از یه فانکشن ریکرسیو استفاده کردم .

    public function getNotEmptyChildLocations($location)
    {
        foreach ($location->children as $child)
        {

            if(count($child->packages) > 0)
            {

                array_push($this->childLocations,$child->parent);

            }
            if(count($child->children) > 0)
            {
                $this->getNotEmptyChildLocations($child);
            }
        }
    }

مشکل من این بود که این کد به شدت تعداد کوئری ها رو بالا می برد برای حل این مشکل از متد with استفاده کردم که تعداد کوئری ها رو از 80 تا به 70
عدد رسوند ولی خوب فقط در یه سطح کار می کرد و برای اینکه توی همه سطحهای پایین تر رابطه زیر مجموعه رو بگیره مجبور شدم اینطوری کد نویسی کنم

        $location = Location::with('children.children.children.children','children.packages', 'children.children.packages','children.children.parent')->whereSlug($slug)->hideHidden()->first();

سوالم این هست که چطور این کار رو درست و اصولی انجام بدم . و راه حل بهتری هست ؟


ثبت پرسش جدید
علی
تخصص : Laravel
@alif 6 سال پیش مطرح شد
0

یک پیکج وجود داره بنام laravel nested set
بهترین پکیجی هست که من دیدم تا الان
مشکلتون رو حل میکنه


رضا رستمی
@incode.ir 6 سال پیش مطرح شد
1

@hesammousavi
سلام مهندس
خواهش این مورد رو توی دوره فعلی نود بیان کنین که بعد ها ما هم به این مشکل نخوریم
مرسی از شماااااااااا


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام