sku 全称为:Stock Keeping Unit,是库存进出计量的基本单元。
我们一般会在电商网站基本都会看到
比如淘宝,JD
淘宝和JD的 方式可能不一样,因为我不清楚他们具体是如何设计的, JD是不同的数据都设计成一个商品.
下面是我的设计思路
mysql 设计,3张表
sku属性表: (编号, 名称)
(1, 颜色)
(2 ,尺码)
sku属性值表: (编号, 属性表键值 ,属性编码, 属性值)
(1, 1 ,1, 黑色)
(2, 1 ,2, 白色)
(3, 2 ,1, S)
(4, 2 ,2, L)
sku表: (编号, 商品编号,属性组合规格 ,价格,数量, 库存,.. (可以自定义运费等) )
(1, 1 ,1|3, 100,1) //黑色 S
(1, 1 ,2|3, 90,1) //白色 S
有多少中组合一次全部添加进去,前台取的时候 直接根据取sku表 商品编号 查询出所有的组合
穿一个自己的demo 效果图
不清楚具体设计的好不好,如果不好请谅解 /(ㄒoㄒ)/~~
附带送上 根据属性获取商品的所有sku属性的组合的方法
/** * 获取属性的所有组合 * @author GstYon <453885726@qq.com> */ private function getArrSet($arrs,$_current_index=-1){ //总数组 static $_total_arr; //总数组下标计数 static $_total_arr_index; //输入的数组长度 static $_total_count; //临时拼凑数组 static $_temp_arr; //进入输入数组的第一层,清空静态数组,并初始化输入数组长度 if($_current_index<0) { $_total_arr=array(); $_total_arr_index=0; $_temp_arr=array(); $_total_count=count($arrs)-1; $this->getArrSet($arrs,0); } else { //循环第$_current_index层数组 foreach($arrs[$_current_index] as $v) { //如果当前的循环的数组少于输入数组长度 if($_current_index<$_total_count) { //将当前数组循环出的值放入临时数组 $_temp_arr[$_current_index]=$v; //继续循环下一个数组 $this->getArrSet($arrs,$_current_index+1); } //如果当前的循环的数组等于输入数组长度(这个数组就是最后的数组) else if($_current_index==$_total_count) { //将当前数组循环出的值放入临时数组 $_temp_arr[$_current_index]=$v; //将临时数组加入总数组 $_total_arr[$_total_arr_index]=$_temp_arr; //总数组下标计数+1 $_total_arr_index++; } } } return $_total_arr; }