Доброго времени суток!
Уважаемые хабровчане, только начал познавать 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 запросов на страницу только выводом этого "дерева категорий"!
Использовать пагинацию и лимиты не вариант, объединение родительских и дочерних категорий в одну таблицу тоже.
Подскажите пожалуйста, как можно оптимизировать вывод родительских и дочерних категорий?
Заранее благодарю!