laravel电商学习系列-03 商品模块-进阶 商品类目

1. 前言

前面总结了商品模块的基础课程,本节将总结L06课程中的商品模块进阶内容——商品类目。
课程传送门

2. 功能分析

商品按类目分类,实现面包屑导航。

2.1 需求分析

实现面包屑导航,商品可以按照类目划分/搜索。


面包屑导航-效果图

2.2 表设计

  • 实现逻辑
    新建一个商品类目表,保存类目之间的上下级关系;商品表与商品类目表关联;
  • 表设计
    类目之间存在上下级关系,需要保存当前类目的上级类目 parent_id ,当前类目层级 level;
    课程中,很巧妙地用 path 字段,保存了当前类目的所有上级类目id,减少了递归查询上级类目;
    具体表结构如下:
# 类目表
CREATE TABLE `categories` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT, # 自增ID
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, # 类目名称
  `parent_id` int(10) unsigned DEFAULT NULL, # 上级类目ID
  `is_directory` tinyint(1) NOT NULL, # 是否拥有下级类目
  `level` int(10) unsigned NOT NULL, # 当前类目层级
  `path` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, # 当前类目所有上级类目id
  `created_at` timestamp NULL DEFAULT NULL, # 创建时间
  `updated_at` timestamp NULL DEFAULT NULL, # 更新时间
  PRIMARY KEY (`id`),
  KEY `categories_parent_id_foreign` (`parent_id`),
  CONSTRAINT `categories_parent_id_foreign` FOREIGN KEY (`parent_id`) REFERENCES `categories` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

# 商品表
ALTER TABLE `products` ADD `category_id` int(10) unsigned DEFAULT NULL; # 所属类目ID
  1. 代码借鉴
    本章节的代码质量也是很赞,有很多巧用。
  • 类目表中的 parent_id 设置了联级删除外键,也就是当上级类目被删除时,下级类目也会一起被删除(删除时加上提醒会更贴心哦);
  • laravel-admin 异步加载下拉框,以及查询数据重组,很强大;
  • 类目树的数据结构
  • viewComposer的使用,向指定模板文件注入变量;

上一节:02 商品模块-基础
下一节:04 商品模块-进阶 众筹

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容