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 相关文章推荐
php Xdebug的安装与使用详解
Jun 20 PHP
PHP 如何利用phpexcel导入数据库
Aug 24 PHP
php用正则表达式匹配中文实例详解
Nov 06 PHP
php+xml实现在线英文词典之添加词条的方法
Jan 23 PHP
WordPress中&quot;无法将上传的文件移动至&quot;错误的解决方法
Jul 01 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
Dec 17 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
Dec 31 PHP
php 自定义错误日志实例详解
Nov 12 PHP
PHP开发中解决并发问题的几种实现方法分析
Nov 13 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
Apr 05 PHP
laravel 如何实现引入自己的函数或类库
Oct 15 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 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
Smarty模板快速入门
2007/01/04 PHP
php中比较简单的导入phpmyadmin生成的sql文件的方法
2011/06/28 PHP
php方法调用模式与函数调用模式简例
2011/09/20 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
2012/08/22 PHP
深入PHP magic quotes的详解
2013/06/17 PHP
PHP生成等比缩略图类和自定义函数分享
2014/06/25 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
2014/07/25 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
2020/03/18 PHP
jquery 简单的进度条实现代码
2010/03/11 Javascript
jquery创建一个新的节点对象(自定义结构/内容)的好方法
2013/01/21 Javascript
JavaScript怎么判断图片是否加载完成以便获取其尺寸
2014/05/08 Javascript
jQuery使用cookie与json简单实现购物车功能
2016/04/15 Javascript
JavaScript实现页面定时刷新(定时器,meta)
2016/10/12 Javascript
JavaScript评论点赞功能的实现方法
2017/03/13 Javascript
详解微信小程序Radio选中样式切换
2017/07/06 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
Javascript获取某个月的天数
2018/05/30 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
vue实现井字棋游戏
2020/09/29 Javascript
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
python抓取某汽车网数据解析html存入excel示例
2013/12/04 Python
Python进行数据科学工作的简单入门教程
2015/04/01 Python
几个提升Python运行效率的方法之间的对比
2015/04/03 Python
python实现从ftp服务器下载文件的方法
2015/04/30 Python
使用python实现http及ftp服务进行数据传输的方法
2018/10/26 Python
python日志模块logbook使用方法
2019/09/19 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
2020/12/07 Python
英国在线发型和美容产品商店:Beauty Cutie
2019/04/27 全球购物
The North Face北面法国官网:美国著名户外品牌
2019/11/01 全球购物
员工自我鉴定
2013/10/09 职场文书
师德模范事迹材料
2014/06/03 职场文书
民警个人对照检查剖析材料
2014/09/17 职场文书
校本培训个人总结
2015/02/28 职场文书
Python MNIST手写体识别详解与试练
2021/11/07 Python
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫