@Analka

Как вывести дочек категории и описание категории?

есть модель Category

protected $table = 'categories';

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

    public function categories()
    {
        return $this->hasMany(Category::class, 'parent');
    }

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

    public function description(){
        return $this->hasOne(CategoryDescription::class, 'category_id')->where('language_id','=', 1);
    }

Модель CategoryDescription - здесь хранятся названия категорий с описанием на разных языках
protected $table = 'category_descriptions';

    protected $fillable = [
        'category_id','language_id','name','description','meta_title','meta_description','meta_keyword'
    ];


как сократить количество запросов к базе и ускорить обработку меню, без кэша пока?

Создал провайдер

public function boot()
    {
        View::composer(['layouts.app'], function ($view){

            $view->with([
                'categories' =>  Category::where('parent','=',0)->with('childrens')->get(),
            ]);
        });
    }


и когда вывожу меню
@foreach($categories as $category)
                            <li class="_sidebar-menu_item">
                                <a href="#menu-{{$category->id}}" class="_sidebar-menu_link">
                                <span class="_sidebar-menu_img">
                                    <img src="{{$category->image}}" alt="{{$category->description['name']}}">
                                </span>
                                    <span class="_sidebar-menu_txt">{{$category->description['name']}}</span>
                                </a>
                            </li>
                        @endforeach


получается много запросов к базе, а я только вывел 2 родительские категории
5ed190158fc71587067154.png
  • Вопрос задан
  • 142 просмотра
Пригласить эксперта
Ответы на вопрос 1
@rst630
Одним запросом брать все категории из базы и уже на php строить дерево через рекурсивную функцию.

Вот пример Дерево категорий Laravel. Как уменьшить количество запросов в БД?

Можно воспользоваться пакетом https://github.com/staudenmeir/laravel-adjacency-l... - вам нужен метод descendants() - удобно это тем что можно взять любого уровня категорию и построить дерево глубже, только вот по кол-ву запросов этим пакетом не подскажу, потестите.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы