laravel7学习之无限级分类的最新实现方法


Posted in PHP onSeptember 30, 2020

写在前面的话

无限级分类,基本在所有的网站都有涉及,所以是必须要掌握的知识点,在网上看很多资料文档,要么不细致,要么根本不对,要么达不到预想的目标,其实实现的思路和方法非常简单,今天我们一起来实现一下。

laravel7学习之无限级分类的最新实现方法

创建模型控制器数据迁移文件

这里直接使用artisan命令进行创建

# -a 其实就是all,创建包含模型,控制器(资源),数据迁移文件(工厂模型、seed)
php artisan make:model -a Category

运行这条命令,就可以创建好资源控制器。

laravel7学习之无限级分类的最新实现方法

修改数据迁移文件

首先修改数据迁移文件xxx_create_categories_table.

打开文件,修改里面的up方法,添加相应字段。

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();
  });

laravel7学习之无限级分类的最新实现方法

执行迁移命令

php artisan migrate

嵌套模型实现读取

//App\Models\Category.php
 
public function categories()
 {
  return $this->hasMany(self::class, 'pid', 'id')->with('categories');
 }

控制器调用

//app\Http\controllers\CategooryController.php
# use模型
use App\Models\Category;
 
public function index()
 {
  $categories = Category::with('categories')->where('pid', 0)->get();
  return view('category.index', compact('categories'));
 }

添加路由

在 routes/web.php,我们添加以下内容:

Route::get('category', 'CategoryController@index');

blade模版渲染

这里使用递归渲染。

在 resources/views/categories.blade.php 文件:

<table class="table table-borderless table-data3">
  <thead>
   <tr>
    <th>编号</th>
    <th>分类名称</th>
    <th>分类标识</th>
    <th>分类描述</th>
    <th>创建时间</th>
    <th>状态</th>
    <th>操作</th>
   </tr>
  </thead>
  <tbody>
   @foreach ($categories as $category)
   <tr class="tr-shadow">
    <td>{{ $category->id }}</td>
    <td>{{ $category->title }}</td>
    <td>
     <span class="block-email">{{ $category->name }}</span>
    </td>
    <td class="desc">{{ $category->description }}</td>
    <td>{{ $category->created_at }}</td>
    <td>
     <span class="status--process">{{ $category->status }}</span>
    </td>
    <td></td>
   </tr>
   <tr class="spacer"></tr>
   @foreach ($category->categories as $childCategory)
   @include('category.child_category', ['child_category' => $childCategory])
   @endforeach
   @endforeach
  </tbody>
 </table>

递归部分加载自身模版child_category.blade.php

<tr class="tr-shadow">
 <td>{{ $child_category->id }}</td>
 <td>|{{ str_repeat('--',$child_category->level-1) }} {{ $child_category->title }}</td>
 <td>
  <span class="block-email">{{ $child_category->name }}</span>
 </td>
 <td class="desc">{{ $child_category->description }}</td>
 <td>{{ $child_category->created_at }}</td>
 <td>
  <span class="status--process">{{ $child_category->status }}</span>
 </td>
 <td></td>
</tr>
<tr class="spacer"></tr>
@if ($child_category->categories)
@foreach ($child_category->categories as $childCategory)
@include('category.child_category', ['child_category' => $childCategory])
@endforeach
@endif

最后看一下效果

laravel7学习之无限级分类的最新实现方法

总结

到此这篇关于laravel7学习之无限级分类最新实现方法的文章就介绍到这了,更多相关laravel7无限级分类实现内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
论坛头像随机变换代码
Oct 09 PHP
php下用cookie统计用户访问网页次数的代码
May 09 PHP
zend framework文件上传功能实例代码
Dec 25 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
Jul 10 PHP
PHP串行化与反串行化实例分析
Dec 27 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
Feb 04 PHP
php smtp实现发送邮件功能
Jun 22 PHP
thinkPHP多表查询及分页功能实现方法示例
Jul 03 PHP
php实现微信支付之现金红包
May 30 PHP
thinkPHP框架动态配置用法实例分析
Jun 14 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 PHP
PHP标准库 (SPL)――Countable用法示例
Jun 05 PHP
如何利用PHP实现上传图片功能详解
Sep 24 #PHP
JS中彻底删除JSON对象组成的数组中的元素
Sep 22 #PHP
phpstudy隐藏index.php的方法
Sep 21 #PHP
如何在Laravel之外使用illuminate组件详解
Sep 20 #PHP
PHP编程一定要改掉的5个不良习惯
Sep 18 #PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
Sep 17 #PHP
深入浅析安装PhpStorm并激活的步骤详解
Sep 17 #PHP
You might like
用函数读出数据表内容放入二维数组
2006/10/09 PHP
PHP 5.0对象模型深度探索之类的静态成员
2008/03/27 PHP
php中$this-&amp;gt;含义分析
2009/11/29 PHP
PHP strtotime函数详解
2009/12/18 PHP
用PHP ob_start()控制浏览器cache、生成html实现代码
2010/02/16 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
2014/08/21 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
如何利用http协议发布博客园博文评论
2015/08/03 PHP
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
2013/02/02 Javascript
JavaScript事件处理器中的event参数使用介绍
2013/05/24 Javascript
前端开发过程中浏览器版本的两种判定方法
2013/10/30 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
JavaScript保存并运算页面中数字类型变量的写法
2015/07/06 Javascript
JavaScript的Vue.js库入门学习教程
2016/05/23 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
2016/11/17 Javascript
javascript 中模板方法单例的实现方法
2017/10/17 Javascript
Nodejs连接mysql并实现增、删、改、查操作的方法详解
2018/01/04 NodeJs
Vue组件中slot的用法
2018/01/30 Javascript
vue 弹出遮罩层样式实例
2020/07/22 Javascript
JS实现公告上线滚动效果
2021/01/10 Javascript
Python 正则表达式入门(初级篇)
2016/12/07 Python
Django的性能优化实现解析
2019/07/30 Python
MATCHESFASHION.COM美国官网:英国奢侈品零售商
2018/10/29 全球购物
人力资源管理毕业生自荐信
2013/11/21 职场文书
土木工程专业个人求职信
2013/12/30 职场文书
婚庆公司的创业计划书
2014/01/22 职场文书
内刊编辑求职自荐书范文
2014/02/19 职场文书
办公自动化专业大学生职业规划书
2014/03/06 职场文书
高三上学期学习自我评价
2014/04/23 职场文书
喋血孤城观后感
2015/06/08 职场文书
欠条样本
2015/07/03 职场文书
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP
python疲劳驾驶困倦低头检测功能的实现
2022/04/04 Python
Vue 打包后相对路径的引用问题
2022/06/05 Vue.js