@Tech5

Как оптимизировать вывод родительских и дочерних категорий в виде «дерева»?

Доброго времени суток!

Уважаемые хабровчане, только начал познавать Laravel и столкнулся с проблемой ОПТИМИЗАЦИИ вывода родительских и дочерних категорий в виде "дерева".
Требуется вывести около сорока родительских и почти сотню дочерних категорий.

Есть две таблицы categories и subcategories, в последней есть внешний ключ category_id связанный с id в таблице categories. Также есть две модели: Category и Subcategory с связью один ко многим.

В контроллере пишу:
class CategoryController extends Controller
{
    public function index()
    {
				$categories = Category::with('subcategory')->get();
        return view('dashboard.categories.index', compact('categories'));
    } 
}


В файле blade вывожу так:
@foreach($categories as $category)
	{{ $category->title }}

	@foreach($category->subCategory as $sub_category)
		{{ $sub_category->title }}
	@endforeach

@endforeach


При этом на вывод каждой родительской категории выпадает запрос в базу вида:
select * from `subcategories` where `subcategories`.`category_id` = 1 and `subcategories`.`category_id` is not null


Итого более 40 запросов на страницу только выводом этого "дерева категорий"!
Использовать пагинацию и лимиты не вариант, объединение родительских и дочерних категорий в одну таблицу тоже.

Подскажите пожалуйста, как можно оптимизировать вывод родительских и дочерних категорий?
Заранее благодарю!
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
@Kostik_1993
Fullstack Web Developer | PHP | Laravel | Vue.js
Вы где-то косячите и делаете не так как пишите тут. Попробуйте заменить subcategory на subCategory в основном запросе
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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