laravel電商學(xué)習(xí)系列-03 商品模塊-進(jìn)階 商品類目

1. 前言

前面總結(jié)了商品模塊的基礎(chǔ)課程,本節(jié)將總結(jié)L06課程中的商品模塊進(jìn)階內(nèi)容——商品類目。
課程傳送門

2. 功能分析

商品按類目分類,實(shí)現(xiàn)面包屑導(dǎo)航。

2.1 需求分析

實(shí)現(xiàn)面包屑導(dǎo)航,商品可以按照類目劃分/搜索。


面包屑導(dǎo)航-效果圖

2.2 表設(shè)計(jì)

  • 實(shí)現(xiàn)邏輯
    新建一個(gè)商品類目表,保存類目之間的上下級(jí)關(guān)系;商品表與商品類目表關(guān)聯(lián);
  • 表設(shè)計(jì)
    類目之間存在上下級(jí)關(guān)系,需要保存當(dāng)前類目的上級(jí)類目 parent_id ,當(dāng)前類目層級(jí) level;
    課程中,很巧妙地用 path 字段,保存了當(dāng)前類目的所有上級(jí)類目id,減少了遞歸查詢上級(jí)類目;
    具體表結(jié)構(gòu)如下:
# 類目表
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, # 上級(jí)類目ID
  `is_directory` tinyint(1) NOT NULL, # 是否擁有下級(jí)類目
  `level` int(10) unsigned NOT NULL, # 當(dāng)前類目層級(jí)
  `path` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, # 當(dāng)前類目所有上級(jí)類目id
  `created_at` timestamp NULL DEFAULT NULL, # 創(chuàng)建時(shí)間
  `updated_at` timestamp NULL DEFAULT NULL, # 更新時(shí)間
  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. 代碼借鑒
    本章節(jié)的代碼質(zhì)量也是很贊,有很多巧用。
  • 類目表中的 parent_id 設(shè)置了聯(lián)級(jí)刪除外鍵,也就是當(dāng)上級(jí)類目被刪除時(shí),下級(jí)類目也會(huì)一起被刪除(刪除時(shí)加上提醒會(huì)更貼心哦);
  • laravel-admin 異步加載下拉框,以及查詢數(shù)據(jù)重組,很強(qiáng)大;
  • 類目樹的數(shù)據(jù)結(jié)構(gòu)
  • viewComposer的使用,向指定模板文件注入變量;

上一節(jié):02 商品模塊-基礎(chǔ)
下一節(jié):04 商品模塊-進(jìn)階 眾籌

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容