Поддерживается ли Nested GroupBy в Laravel? - PullRequest
2 голосов
/ 04 марта 2020

У меня есть таблица категорий с полями "id", "category_id", "name", где "category_id" - это идентификатор родительской категории. Мое требование заключается в том, что мне нужно сгруппировать категории, как показано ниже.

Europe
 - England
Asia
 - India
   - Kerala
     - Kochi

Примечание. Здесь представлены категории Европа, Англия, Азия, Индия, Керала, Кочи. Азия - родительская категория Индии, а Индия - родительская категория Кералы, а Керала - родительская категория Кочи.

Есть ли какое-нибудь вложенное решение groupBy?

1 Ответ

3 голосов
/ 04 марта 2020

Предполагая, что это отношение «один ко многим», то есть одна категория может принадлежать только какой-то другой категории (один родитель)

И ваша модель 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 равен нулю или 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: все это не проверено. дайте мне знать, если что-то не работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...