【问题标题】:Is Nested GroupBy supported in Laravel?Laravel 是否支持嵌套 GroupBy?
【发布时间】:2020-03-04 14:50:30
【问题描述】:

我有一个类别表,其中包含“id”、“category_id”、“name”字段,其中“category_id”是父类别的 id。我的要求是我需要像下面这样对类别进行分组。

Europe
 - England
Asia
 - India
   - Kerala
     - Kochi

注意 - 这里欧洲、英格兰、亚洲、印度、喀拉拉邦、高知是类别。亚洲是印度的父类别,印度是喀拉拉邦的父类别,喀拉拉邦是高知的父类别。

是否有一些嵌套的 groupBy 解决方案?

【问题讨论】:

  • 按什么分组?目前还不清楚你想要实现什么
  • 你想以某种方式在刀片中递归地渲染它
  • 是的,我想在刀片文件中分层显示类别。

标签: laravel group-by


【解决方案1】:

假设它是一对多的自引用关系,即一个类别只能属于另一个类别(单亲)

您的Category 模型应该如下所示:

public function parent() {
   return $this->belongsTo('App\Category');
}

public function children() {
   return $this->hasMany('App\Category');
}

在您的 main 刀片模板中,您有:

  <ul class="navbar-nav">
       @foreach ($menu_items as $item)
             @include('menu', $item)
       @endforeach
  </ul>

其中$menu_items 是所有父类别的列表( category_id 为 null 或 0 的类别)

还有你的menu刀片模板:

@if ( $item->children->isNotEmpty() )
<li class="nav-item {{ $item->parents->isNotEmpty() ? 'dropdown-submenu' : 'dropdown' }}">
    <a class="nav-link dropdown-toggle" href="{{ $item->slug ? url($item->slug) : 'javascript:void(0);' }}" id="navbarDropdown{{ $item->id }}" role="button" data-toggle="hover">
        {{ $item->title }}
    </a>

    <ul class="dropdown-menu" aria-labelledby="navbarDropdown{{ $item->id }}">
        @foreach ($item->children as $item)

            @include('menu', $item)

        @endforeach
    </ul>
@else
<li class="nav-item">
    <a class="nav-link" href="{{ $item->slug ? url($item->slug) : 'javascript:void(0);' }}">{{ $item->title }}</a>
@endif
</li>

我实际上是从我最近从事的一个项目中粘贴了这段代码,以便让您了解嵌套下拉菜单,您必须自己处理样式部分。但是这段代码足以让你有个正确的理解。

PS:这一切都未经测试。如果有什么问题,请告诉我

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 2016-11-06
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多