есть модель 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 родительские категории