写在前面的话 无限级分类,基本在所有的网站都有涉及,所以是必须要掌握的知识点,在网上看很多资料文档,要么不细致,要么根本不对,要么达不到预想的目标,其实实现的思路和方法非常简单,今天我们一起来实现一下。 创建模型控制器数据迁移文件 这里直接使用artisan命令进行创建 # -a 其实就是all,创建包含模型,控制器(资源),数据迁移文件(工厂模型、seed) php artisan make:model -a Category 运行这条命令,就可以创建好资源控制器。 修改数据迁移文件 首先修改数据迁移文件xxx_create_categories_table. 打开文件,修改里 在本文中,我们将探讨在 Laravel 7 中实现无限级分类的方法。无限级分类在许多网站中都是必不可少的,用于组织和展示层次结构清晰的内容。在 Laravel 中,我们可以利用其强大的功能来轻松处理这类问题。 为了快速启动项目,我们会使用 Artisan 命令行工具来创建必要的模型、控制器和数据迁移文件。通过运行以下命令,可以创建一个名为 `Category` 的模型、一个资源控制器以及数据迁移文件: ```bash php artisan make:model -a Category ``` 接下来,我们需要修改生成的数据迁移文件 `xxx_create_categories_table`。在 `up` 方法中,添加用于无限级分类的字段,如父 ID (`pid`)、层级 (`level`) 和排序值 (`sort`): ```php Schema::create('categories', function (Blueprint $table) { $table->id(); $table->string('title', 100)->comment('分类名称'); $table->string('name', 100)->comment('分类标识'); $table->string('description', 255)->nullable()->comment('分类描述'); $table->integer('pid')->default(0)->comment('分类id'); $table->integer('level')->default(1)->comment('分类层级'); $table->integer('sort')->default(0)->comment('排序'); $table->integer('status')->default(1)->comment('状态:0-禁用,1-正常'); $table->timestamps(); }); ``` 完成字段定义后,运行迁移命令来更新数据库结构: ```bash php artisan migrate ``` 为了实现无限级分类的读取,我们需要在 `Category` 模型中定义一个递归关系。在 `App\Models\Category` 类中添加以下代码: ```php public function categories() { return $this->hasMany(self::class, 'pid', 'id')->with('categories'); } ``` 这将允许我们在查询时获取分类及其子分类。 接下来,在控制器中,我们需要从根分类开始获取所有分类。在 `CategoryController` 中的 `index` 方法中,添加以下代码: ```php public function index() { $categories = Category::with('categories')->where('pid', 0)->get(); return view('category.index', compact('categories')); } ``` 接下来,我们需要在 `routes/web.php` 文件中添加路由以便访问分类列表: ```php Route::get('category', 'CategoryController@index'); ``` 我们将在 Blade 模板中使用递归来渲染分类列表。在 `resources/views/category/index.blade.php` 文件中,编写 HTML 结构,并使用 `@foreach` 循环和 `@include` 递归地显示子分类: ```html <table class="table table-borderless table-data3"> <!-- ... --> @foreach ($categories as $category) <!-- ... --> @foreach ($category->categories as $childCategory) @include('category.child_cat', ['category' => $childCategory]) @endforeach @endforeach </table> ``` 同时,创建一个新的模板 `resources/views/category/child_cat.blade.php` 来处理子分类的渲染: ```html <tr class="tr-shadow"> <!-- ... --> </tr> <tr class="spacer"></tr> ``` 这样,我们就实现了在 Laravel 7 中的无限级分类功能。用户可以通过访问 `/category` 路由查看分类列表,而这些列表会根据层级结构自动生成。这个实现不仅简单,而且易于扩展,可以适应不同场景的需求。
- 粉丝: 11
- 资源: 930
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 搜广推推荐系统中传统推荐系统方法思维导图整理-完整版
- 微藻检测19-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 使用AS的自定义功能块与OS之间WINCC自定义功能块图标,自定义功能块面板教程 1.不是采用西门子APL面板实现 2.AS可以采用LAD或者SCL语言生成功能块 3.实现弹窗功能 4.事件可
- 等发达地区的无穷大无穷大无穷大请问
- Python实现常见排序算法详解
- JWaaaaaaaaaaaaaaaaaaaa
- Python复制重复数据工具.exe
- 2024圣诞节海外消费市场趋势及营销策略分析报告
- 基于Java的网上教务评教管理系统的设计与实现.doc
- EventHandlerError解决办法.md
- NotImplementedError.md
- SecurityException(解决方案).md
- IllegalAccessException(解决方案).md
- NameError.md
- NSRunLoopError如何解决.md
- OSError.md