1

如何显示所有类别,带有子,子,子(..)类别,我有简单的表格:

在此处输入图像描述

和我的模型:

class Category extends Model
{
    public $fillable = [
        'parent_id',
        'name',
        'description'
    ];

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

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

我想得到:

<ul>
  <li>Category
    <ul>
      <li>Category 1.1</li>
      <li>Category 1.2</li>
    </ul>
  </li>
  (...)
</ul>
4

1 回答 1

1

这种实用的方法适用于具有n个子项的n个类别

首先创建一个局部视图category.blade.php文件,该文件将递归调用自身来加载其子项

<li>
       @if ($category->children()->count() > 0 )
           <ul>
               @foreach($category->children as $category)

                       @include('category', $category) //the magic is in here

               @endforeach
           </ul>

       @endif
</li>

然后在主视图中添加此代码以递归方式加载所有子项

  <ul>
        @foreach ($categories as $category)

            @if($category->parent_id == 0 )

                @include('category', $category)

            @endif
        @endforeach

    </ul>
于 2018-02-13T18:47:03.350 回答