1. 什么是多规格SKU
在电商商品的描述中,我们常常会看到类似这样的描述:尺码:S、M、L,颜色:红、黄、蓝。
这就是商品多规格SKU(Stock Keeping Unit)的表现形式,通过不同的规格属性(如尺码、颜色等)来定义不同的商品款式。
对于电商平台来说,实现商品多规格SKU可以提高商品信息的细化程度,方便用户挑选,也方便后台管理。
2. PHP实现多规格SKU的步骤
2.1 创建商品规格属性表
在数据库中创建商品规格属性表,如下:
CREATE TABLE `goods_spec` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`goods_id` int(11) unsigned NOT NULL COMMENT '商品ID',
`spec_name` varchar(50) NOT NULL COMMENT '规格名称',
`spec_value` varchar(50) NOT NULL COMMENT '规格值',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品规格属性表';
2.2 创建商品规格关联表
在数据库中创建商品规格关联表,如下:
CREATE TABLE `goods_spec_relation` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`goods_id` int(11) unsigned NOT NULL COMMENT '商品ID',
`spec_sku_id` varchar(50) NOT NULL COMMENT '规格SKU ID',
`spec_name` varchar(50) NOT NULL COMMENT '规格名称',
`spec_value` varchar(50) NOT NULL COMMENT '规格值',
`spec_img` varchar(255) DEFAULT NULL COMMENT '规格图片',
`price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '价格',
`stock` int(11) NOT NULL DEFAULT '0' COMMENT '库存',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品规格关联表';
2.3 修改商品表
在商品表中增加“规格总库存”、“是否支持多规格”等字段,如下:
ALTER TABLE `goods` ADD `total_stock` INT(11) NOT NULL DEFAULT '0' COMMENT '规格总库存';
ALTER TABLE `goods` ADD `is_support_sku` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '是否支持多规格(0-否;1-是)';
2.4 编写商品添加页面
在商品添加页面中,增加对商品规格的相关操作,如添加、删除、编辑等操作,并将规格数据保存到数据库。
2.5 商品详情页的展示
在商品详情页中,根据商品是否支持多规格来展示商品信息,如单品展示商品基本信息,多规格展示商品规格信息。
3. PHP实现多规格SKU的技巧
3.1 规格属性的选择
在创建商品规格属性表时,需要根据实际需求选择规格属性,一般包括尺码、颜色等,不建议选择过多的规格属性,以免增加开发难度和后期维护难度。
3.2 商品规格SKU的生成
在规格属性表中添加规格数据时,需要根据规格属性生成规格SKU,规格SKU的生成可以通过组合规格属性值的方式生成,可以参考下面的PHP代码实现:
/**
* 根据规格属性值生成规格SKU
*
* @param array $specData 规格数据
* @return string 规格SKU
*/
function createSpecSku($specData)
{
$specValueArr = array_column($specData, 'spec_value');
sort($specValueArr);
return implode('-', $specValueArr);
}
3.3 展示商品规格信息
在展示商品规格信息时,可以通过Ajax动态获取商品规格信息,提高页面加载速度,同时也可以方便实现商品规格信息的缓存,减少数据库查询次数,提高系统性能。
3.4 处理商品规格价、库存计算
在处理商品规格价、库存计算时,需要根据规格属性计算商品规格价格和库存,可以参考下面的PHP代码实现:
/**
* 计算商品规格价格
*
* @param array $skuData 商品规格数据
* @return float 商品价格
*/
function calcGoodsPrice($skuData)
{
$price = 0;
foreach ($skuData as $spec) {
$price += $spec['price'];
}
return $price;
}
/**
* 计算商品规格总库存
*
* @param array $skuData 商品规格数据
* @return int 商品规格总库存
*/
function calcGoodsStock($skuData)
{
$stock = 0;
foreach ($skuData as $spec) {
$stock += $spec['stock'];
}
return $stock;
}
4. 总结
通过PHP实现商品多规格SKU,可以提高商品信息的细化程度,方便用户挑选,也方便后台管理。在实现过程中,需要注意规格属性的选择、商品规格SKU的生成、展示商品规格信息、处理商品规格价、库存计算等技巧,才能更好地实现商品多规格SKU。