Как вывести дочерние категории?

Подскажите, пожалуйста, как мне вывести дочерние категории в шаблоне? Я попробовал $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
→ Ссылка