Как вывести дочерние категории?
Подскажите, пожалуйста, как мне вывести дочерние категории в шаблоне? Я попробовал $category->children
или
@foreach ($item->childer as $child)
<h1>{{ $child->title }}</h1>
@endforeach
Но мне выводит ошибку App\Models\Category::children(): Return value must be of type App\Models\HasMany, Illuminate\Database\Eloquent\Relations\HasMany returned. В модели я прописал отношения:
public function children(){
return $this->hasMany(Category::class, 'parent_id');
}
public function parent(){
return $this->belongsTo(Category::class, 'parent_id');
}
Ответы (1 шт):
Автор решения: Vladimir Gonchar
→ Ссылка
Отношения верные. Но это отношения, а не вызываемые методы. Вы должны их вызывать при запросе, а затем уже получать в шаблоне.
То есть сначала получаете данные так:
$categories = Category::whereId($id)->with(['children', 'parent'])->first();
return view('your_view', compact('categories'));
А в шаблоне уже получаете в категории массив с детьми и родителями по названию связи (не заставляете Laravel задумываться, как получить данные, а сами прописываете связи при запросе)
@foreach ($item->children as $child)
<h1>{{ $child->title }}</h1>
@endforeach
@foreach ($item->parent as $child)
<h1>{{ $child->title }}</h1>
@endforeach