美文网首页laravel-shop电商
03 商品模块-进阶 商品类目

03 商品模块-进阶 商品类目

作者: 阳光的小mi | 来源:发表于2019-08-04 17:16 被阅读4次

    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 商品模块-进阶 众筹

    相关文章

      网友评论

        本文标题:03 商品模块-进阶 商品类目

        本文链接:https://www.haomeiwen.com/subject/deiqrctx.html