根據不同的商品分類選擇,特殊商品出現不同 擴充套件屬性/規格,如:衣服出現尺碼,顏色
private function getCategoryTreeAndLevel($id, $parent_id) {
$level = 1;
$current_cate_tree = $id;
if ($parent_id > 0) {
$pInfo = $this->getInfo($parent_id);
if ($pInfo) {
$current_cate_tree = "{$pInfo['cate_tree']}-{$current_cate_tree}";
$level = $pInfo['level'] + 1;
}
}
return ['cate_tree' => $current_cate_tree, 'level' => $level];
}
模糊查詢
(cate_tree LIKE 'pid-%' or cate_tree LIKE '%-pid-%')
1.商品分類表:一次性把資料讀出來(id做key)然後遞迴處理,不要遞迴取資料庫
Array
(
[758] => Array
(
[id] => 758
[name] => 綜合開單
[pid] => 99
)
[738] => Array
(
[id] => 738
[name] => 商家首頁
[pid] => 92
)
CREATE TABLE `category` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '分類ID',
`pid` int(11) DEFAULT '0' COMMENT '分類父ID',
`level` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '層數',
`name` varchar(100) DEFAULT NULL COMMENT '分類名稱',
`seo_title` varchar(20) DEFAULT NULL COMMENT 'SEO標題',
`seo_keyword` varchar(20) DEFAULT NULL COMMENT 'SEO關鍵字',
`seo_desc` varchar(50) DEFAULT NULL COMMENT 'SEO描述',
`cate_tree` varchar(100) DEFAULT NULL COMMENT '分類樹形結構',
`listorder` int(11) DEFAULT '0' COMMENT '排序',
PRIMARY KEY (`id`),
KEY `pid` (`pid`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4;
INSERT INTO `category` (`id`, `pid`, `level`, `name`, `seo_title`, `seo_keyword`, `seo_desc`, `cate_tree`, `listorder`)
VALUES
(1, 0, 1, '日常所需', '', '', '', '1', 0),
(2, 1, 2, '註冊公司', '', '', '', '1-2', 0),
(3, 2, 3, '國內遊', '', '', '', '1-2-3', 0),
(4, 3, 4, '上海遊', '', '', '', '1-2-3-4', 0),
(5, 1, 2, '企業開戶', '', '', '', '1-5', 0),
(6, 0, 1, '辦公硬體', '', '', '', '6', 0);
分隔符要用 ‘-’,不要用下劃線 ‘_’
2.分類屬性表(核心)
CREATE TABLE `category_fields` (
`field_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '分類屬性表',
`category_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '分類ID',
`field_name` varchar(100) NOT NULL DEFAULT '' COMMENT '屬性code',
`title` varchar(255) NOT NULL DEFAULT '' COMMENT '名稱',
`description` varchar(255) NOT NULL DEFAULT '' COMMENT '描敘',
`required` enum('no','yes') NOT NULL DEFAULT 'no' COMMENT '是否必填',
`formtype` varchar(255) NOT NULL DEFAULT '' COMMENT '表單型別',
`choices` text NOT NULL COMMENT '值選項',
`sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序',
`unit` varchar(10) DEFAULT NULL COMMENT '單位',
`min` int(11) unsigned DEFAULT NULL COMMENT '文字框時的最小值',
`max` int(11) unsigned DEFAULT NULL COMMENT '文字框時的最大值',
PRIMARY KEY (`field_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
INSERT INTO `category_fields` (`field_id`, `category_id`, `field_name`, `title`, `description`, `required`, `formtype`, `choices`, `sort`, `unit`, `min`, `max`)
VALUES
(1, 1, 'renjunyusuan', '人均預算', '', 'no', 'text', '', 0, '元', 1, 2),
(2, 1, 'renshu', '旅遊人數', '', 'no', 'text', '', 0, '', NULL, NULL),
(3, 1, 'daogou', '允許導購', '', 'no', 'radio', '是 否', 0, '', NULL, NULL),
(4, 1, 'days', '預計天數', '', 'no', 'checkbox', '2天1夜 3天2夜', 0, '', NULL, NULL);
3.商品屬性值表
CREATE TABLE `mall_product_field_value` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '商品屬性值',
`product_id` int(11) NOT NULL DEFAULT '0' COMMENT '商品ID',
`field_id` int(11) NOT NULL DEFAULT '0' COMMENT '屬性ID',
`value` text COMMENT '屬性值',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
二規格表
CREATE TABLE `catalog_standard` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '分類規格表',
`pid` int(11) NOT NULL DEFAULT '0',
`level` int(11) NOT NULL DEFAULT '1',
`catalog_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '分類ID',
`name` varchar(100) NOT NULL DEFAULT '' COMMENT '規格code',
`value` varchar(100) NOT NULL DEFAULT '' COMMENT '值選項',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
INSERT INTO `catalog_standard` (`id`, `pid`, `level`, `catalog_id`, `name`, `value`)
VALUES
(1, 0, 1, 35, 'color', '顏色'),
(2, 0, 1, 35, 'size', '尺碼'),
(3, 1, 2, 35, 'red', '紅色'),
(4, 1, 2, 35, 'black', '黑色'),
(5, 2, 2, 35, 'S', 'S'),
(6, 2, 2, 35, 'M', 'M'),
(7, 2, 2, 35, 'L', 'L');
規格checkbox勾選值表
CREATE TABLE `mall_product_standard_value` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '商品規格值',
`product_id` int(11) NOT NULL DEFAULT '0' COMMENT '產品ID',
`root_standard_id` int(11) NOT NULL DEFAULT '0' COMMENT 'level=1的StandardID',
`standard_id` varchar(100) NOT NULL DEFAULT '0' COMMENT '規格ID',
`value` varchar(100) NOT NULL DEFAULT '' COMMENT '值',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
INSERT INTO `mall_product_standard_value` (`id`, `product_id`, `root_standard_id`, `standard_id`, `value`)
VALUES
(1, 1, 1, '3', '紅色1'),
(2, 1, 1, '4', '黑色'),
(3, 1, 2, '5', 'S222')
規格勾選後,js生成不同規格組合的表單(價格/庫存/貨號),修改勾選規格名稱,表單的規格名稱也隨之變化,商品的基礎屬性庫存不允許填寫,庫存是自動加和的
不同規則選項組合表
CREATE TABLE `mall_product_standard_value_group` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '商品規則組合值',
`product_id` int(11) NOT NULL DEFAULT '0' COMMENT '產品ID',
`standard_ids` varchar(100) DEFAULT NULL COMMENT '規格組合standard_value_ids',
`inventory` int(11) NOT NULL DEFAULT '0' COMMENT '庫存',
`price` int(11) NOT NULL DEFAULT '0.00' COMMENT '價格(分)',
`sku` varchar(60) DEFAULT NULL COMMENT '貨號',
`bar_code` varchar(32) DEFAULT NULL COMMENT '商品條形碼',
PRIMARY KEY (`id`),
UNIQUE KEY `standard_group` (`standard_ids`,`product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;