Задать вопрос

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

В общем есть таблица категорий 81779a6023a44a3b8f080d2821dc3c23.png.
Код модели
class ProductCategory extends Model
{
    protected $table = 'product_categories';

    public function ProductCategory(){
        return $this->hasMany($this, 'parent_id');
    }

    public function rootCategories(){
        return $this->where('parent_id', 0)->with('ProductCategory')->get();
    }

}


Код контроллера
class ProductCategoryController extends Controller
{
    public function index(ProductCategory $productCategory){
        $rootCategories = $productCategory->rootCategories();
        return view('layouts.catalog', ['rootCategories' => $rootCategories,]);
    }
}


Код шаблона 'layouts.catalog'
<h1>Catalog</h1>
                <ul>
                    @foreach($rootCategories as $rootCategory)
                        <li>{{ $rootCategory->name }}</li>
                        @if($rootCategory->ProductCategory->count() > 0)
                            @include('layouts.partials.treeChildMenu', ['categories' => $rootCategory->ProductCategory])
                        @endif
                    @endforeach
                </ul>


И код шаблона 'layouts.partials.treeChildMenu'
<ul>
    @foreach($categories as $category)
        <li>{{ $category->name }}</li>
        @if($category->ProductCategory->count() > 0)
            @include('layouts.partials.treeChildMenu', ['categories' => $category->ProductCategory])
        @endif
    @endforeach
</ul>


Всё как-бы хорошо ab6b0be707fa4a70bc40839b972e05df.png

Но пугает количество запросов в базу данных. Может это можно как-то оптимизировать? Потому что при добавлении новых пунктов меню запросов становится всё больше и на много.
  • Вопрос задан
  • 12442 просмотра
Подписаться 13 Оценить 2 комментария
Ответ пользователя Александр К ответам на вопрос (9)
@vintkor Автор вопроса
Всем спасибо. Сделал как подсказал ThunderCat
Ответ написан
Комментировать