@Nubbb

Вывод подкатегорий в Laravel?

как избавиться от такого количества запросов при выводе подкатегорий

5ee636ef09462759857055.png

Модель категории

class Category extends Model
{
    protected $table = 'categories';

    protected $fillable = [
        'image','parent','sort_order','published'
    ];

    public function description()
    {
        return $this->hasOne(CategoryDescription::class);
    }
    
    public function childrens()
    {
        return $this->hasMany(Category::class, 'parent');
    }
}


вывожу вот так категории для меню

$categories = Category::where('parent','=',0)->with(['childrens','description' => function($query){
                $query->where('language_id', '=', Session::get('lnaguage_id));
            }])->get();

            $view->with([
                'categories' =>  $categories,
            ]);


View

@foreach($categories as $category)
                @if($category->childrens)
                    <div class="menu-sub divany-i-kresla" id="menu-{{$category->id}}" data-category="{{$category->slug}}">
                        <button class="btn-close btn-close_sub_menu">
                            <svg><use href="#close"></use></svg>
                        </button>
                        <div class="menu-sub_title">
                            <a href="/categories/{{$category->slug}}">{{$category->description->name}}</a>
                        </div>

                        <ul class="menu-sub_categories">
                            @foreach($category->childrens as $children)
                                <li>
                                    <a href="/categories/{{$category->slug}}/{{$children->slug}}">
                                        <img src="{{$children->image}}" alt="{{$children->description->name}}">
                                        <span>{{$children->description->name}}</span>
                                    </a>
                                </li>
                            @endforeach
                        </ul>
                    </div>
                @endif
            @endforeach
  • Вопрос задан
  • 305 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Nubbb Автор вопроса
не знаю на сколько верно, но в модели Category сделал так

public function childrens()
    {
        return $this->hasMany(Category::class, 'parent')->with('description');
    }
Ответ написан
Комментировать
@Dinesh_Chugtai
Изучи вот этот пакет, как там реализовано. Там есть то, что тебе нужно: https://github.com/lazychaser/laravel-nestedset
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы