繁体   English   中英

Laravel显示子类别

[英]Laravel Display sub categories

所以我遇到一个问题,我要设置所有东西并测试它们之间的关系,但无法真正解决问题,我该如何正确地使用嵌套类别输出导航,这就是我的类别模型

public function products() {
    return $this->belongsToMany(Product::class);
}

public function parent()
{
    return $this->belongsTo(Category::class, 'parent_id');
}

public function children()
{
    return $this->hasMany(Category::class, 'parent_id');
}


public function getRouteKeyName()
{
    return 'slug';
}

可以正常工作,我用修补匠进行了测试,可以正确地让孩子和父母使用,因此如何显示它,这是我用来显示类别的部分内容,然后我试图在视图中调用自己,有点像递归,现在有了孩子,但是它在请求时卡住了,页面也无法加载,所以我假设它不能像这样工作

@if(count($categories))
<ul class="list-group">
    @foreach($categories as $category)
        <li class="list-group-item"><a href="/{{ $category->slug }}">{{ $category->name }}</a></li>
        @include('layouts.categories', ['categories' => $category->children])
    @endforeach
</ul>@endif

这是我获取类别的方法,我这样做是为了对所有视图可用,但是我假设此查询是可以修改的查询

   View::composer('*', function ($view) {
        $view->with('categories', Category::all());
    });

我想要的结果是这个

Men
 -Men's Shoes
Women
 -Women's Shoes

如果类别过多,您将遇到N + 1问题。

将此添加到您的模型:

public function allChildren()
{
    return $this->children()->with('allChildren');
}

然后您的作曲家应该是:

   View::composer('*', function ($view) {
        $view->with('categories', Category::with('allChildren')->all());
    });

如果由于多个查询而崩溃,这可能会为您解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM