حسین شیری نژاد
3 سال پیش توسط حسین شیری نژاد مطرح شد
3 پاسخ

پیمایش لیست های تودرتو

سلام و عرض ادب دوستان اگه راهی یا کد آماده ای برای پیمایش این مجموعه دارید لطفا کمک کنید هر سر شاخه
ای چند تا زیرشاخه داره و هر زیر شاخه ای هم میتونه چند تا زیرشاخه داشته باشه و مشخص نیست تا چند سطح زیرشاخه وجود داره. تصویر زیر گویای این موضوع هست

تصویر

میخوام تمام این شاخه هارو پیمایش کنم و با هر سرشاخه زیرشاخه هاشو به دست بیارم و همین طور تا جایی که دیگه زیرشاخه ای وجود نداشته باشه


ثبت پرسش جدید
نوب
تخصص : کدنویس نوب :)
@yk5742g 3 سال پیش آپدیت شد
3

@hosseinshirinegad98
سلام
فرض را با ساخت بی نهایت دسته بندی با بی نهایت زیر دسته میزنیم
کد مایگریشن

    public function up()
    {
        Schema::create('menus', function (Blueprint $table) {

            $table->id();
            $table->string('title');
            $table->string('slug')->nullable();
            $table->integer('parent')->default(0);
            $table->string('menu_id')->nullable();
            $table->enum('status', ['0', '1'])->default('1');
            $table->string('position_header')->nullable();
            $table->string('position_footer')->nullable();
            $table->timestamps();

        });
    }

کد ویو برای نمایش منوهای سرمجموعه

<div class="col-lg-8">
                            @include('dashboard.pages.menu.menues-group',['menu'=>$menues])
                            {{$menues->links()}}
                        </div>

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

<ul class="list-group ">
    @foreach($menues as $row)
        <li style="padding-right: 10px; margin-top: 6px">
            <div class="align-content-between">
                <div class="row rounded"
                     style="padding: 3px; background-color: @if($row->status == '1') #d6f1ff @else #FFD5F3 @endif">
                    <div class="col-md-4">
                        {{$row['title']}} @if($row->status == '0') <span
                            class="font-weight-bold text-danger">(غیرفعال)</span> @endif
                    </div>
                    <div class="col-md-8">
                        <div class="actions ml-2 mr-2 ">
                            <form method="post" action="{{route('menu.destroy',$row->id)}}"
                                  id="{{$row->id}}-delete">
                                @csrf
                                @method('delete')
                            </form>
                            <a href="{{route('menu.show',$row->id)}}" class="badge badge-primary">ویرایش</a>
                            <a href="{{route('menu.create')}}?parent={{$row->id}}" class="badge badge-warning">ثبت
                                زیر دسته</a>
                            <a href="{{route('home')}}/{{$row['slug']}}" target="_blank"
                               class="badge badge-info">نمایش</a>
                            @if(!$row->child->count())
                                <a href="" class="badge badge-danger"
                                   onclick="event.preventDefault(); document.getElementById('{{$row->id}}-delete').submit()">حذف</a>
                            @endif
                            <span> {{$row->position()}}</span>
                        </div>
                    </div>
                </div>
            </div>
            @if($row->child->count())
                @include('dashboard.pages.menu.menues-group',['menues'=>$row->child])
            @endif
        </li>
    @endforeach
</ul>

اینم کد متد درون مدل منو که زیرمجموعه ها را نشون میده

    public function child()
    {
        return $this->hasMany(menu::class, 'parent', 'id');
    }

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


حسین شیری نژاد
تخصص : programmer
@hosseinshirinegad98 3 سال پیش مطرح شد
0

ممنون از وقتی که گذاشتین
کار من در رابطه با دسته بندی ها نبود یه سری تسک که به صورت چند شاخه ای به هم وصل بود و من فقط یه متد میخواستم که این شاخه هارو بخونه
و به یه راحلی رسیدم
بازم از شما تشکر میکنم@yk5742g


فرشید مرادی
تخصص : noob
@eniack 3 سال پیش مطرح شد
1

سلام ، باید از تابع های بازگشتی استفاده کنید ، دوستمون مثال خوبی زدن ما اگر همه ی این موارد رو بعنوان دسته و زیر دسته داشته باشیم به راحتی با تابع بازگشتی امکان پیمایش رو داریم


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

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