mysql 商品规格表_商品规格分析
产品表每次更新商品都会变动的,ID不能用,可是购物车还是用了,这就导致每次保存商品,哪怕什么都没有改动,也会导致用户的购物车失效。
~~~
其实可以考虑不是每次更新商品就除所有的SKU,毕竟有时什么都没修改呢,只改一个价格呢,或者增加一个SKU呢,其实这个问题做细一点有好的处理方式的。
比如商品增加一个版本号字段,SKU也增加一个版本字段,如果SKU规格值变动了那么删除,如果发现规格值还在,只是价格或其它的改变了,那么则只需要改变版本号就可以了,但其实这里面的细节很多,考虑得比较麻烦,还是干脆不要用SKU的ID了,如果能不用SKU的ID,那就全部都不要用,购物车里面也只记录商品的ID和规格字符串就可以了,根据规格字符串查询SKU,如果找不到那就是没有。
~~~
规格不是属于模型,而是模型有个字段可以包含多个规格。多个规格值使用json编码保存。
属性是属于模型的。多个属性值使用逗号分隔。
商品展示时规格怎么获取,跟后台可不一样,后台是可以看到模型下面的所有规格,但不一地你给选用该规格,而前台是要展现所有SKU,请注意这个区别。
iwebshop是将商品的所有规格组(SKU)都放入了goods表,显示时使用了这儿的数据。而tpshop是从sku表中获取的。
classes/goods_class.php 119 line
~~~
//是否存在货品
$goodsUpdateData['spec_array'] = '';
if(isset($postData['_spec_array']))
{
//生成goods中的spec_array字段数据
$goods_spec_array = array();
foreach($postData['_spec_array'] as $key => $val)
{
foreach($val as $v)
{
$tempSpec = JSON::decode($v);
if(!isset($goods_spec_array[$tempSpec['id']]))
{
$goods_spec_array[$tempSpec['id']] = array('id' => $tempSpec['id'],'name' => $tempSpec['name'],'type' => $tempSpec['type'],'value' => array());
}
$goods_spec_array[$tempSpec['id']]['value'][] = $tempSpec['value'];
}
}
foreach($goods_spec_array as $key => $val)
{
$val['value'] = array_unique($val['value']);
$goods_spec_array[$key]['value'] = join(',',$val['value']);
}
$goodsUpdateData['spec_array'] = JSON::encode($goods_spec_array);
}
~~~
products.html 模板
~~~
{if:$spec_array}
{set:$specArray = JSON::decode($spec_array);}
{foreach:items=$specArray}
- {$item['name']}
-
{set:$specVal=explode(',',trim($item['value'],','))}
{foreach:items=$specVal item=$spec_value}
{if:$item['type'] == 1}
- {$spec_value}
{else:}
{/if}
{/foreach}
{/foreach}
{/if}
~~~
* * * * *
### 扩展讨论:标类与非标
当商品比较容易标准化,规范化时使用类型来决定规格这种形式比较好(根据商品类型定义规格模型),但是有一些场景这样就不太灵活了,比如当商品很难标准化,规范化时,比如外卖的餐品,不是每一个餐品都有规格,都有辣度规格,大份小份等规格,所以此时应该寻找另外一种解决方案了,比如使用自定义的规格,这样就灵活很多了,这里就有个很好的实例:[这是商品不依赖类型,自定义规格的完美解决方案!](https://coding.net/u/xiasf/p/gcb/git/commit/6d4116b91cc05e4db483e9eb49bd58611510f0e5#commit-comment-91257) ,当然如果情况复杂特殊,使用两种方式结合也是我们愿意看到的,不过设计起来可能比较复杂,以后有实际案例再讨论。
* * * * *
update:2017-3-16 11:18:03
mysql 商品规格表_商品规格分析相关推荐
- 12平键标准尺寸规格表_普通平键规格尺寸表
普通平键规格尺寸表 普通平键规格尺寸表hbLR=b/2c×45°或 r6.31.61.6 dd-t1+hb键的公称尺寸 键槽尺寸轴槽深 t 毂槽深 t1 圆角半径轴径d b(h9) h(h11)c 或 ...
- 12平键标准尺寸规格表_平键尺寸表
普通平键规格尺寸表 普通平键规格尺寸表 b 6.3 c×45°或 r h 2 b/ R= b 1.6 L 轴径 d 自 6-8 >8-10 >10-12 >12-17 >17- ...
- mysql 商品规格表_完成后台管理系统功能(九)商品规格列表的展示,添加以及删除...
商品规格的实现图: 规律: 1.同一类商品的规格项分组相同. 2.同一类商品的规格项目是相同的.规格项目是跟商品关联. 3.不同商品规格参数的值是不同的 1 页面效果展示: 2.规格列表的展示功能 用 ...
- mysql中设计suk表_电商项目-商品表(spu)、规格表(sku)设计
之前在工作中,需要实现商品规格功能,做了很长一段时间,现在回过头来整理下设计思路. sku,spu概念: SPU = Standard Product Unit (标准化产品单元),SPU是商品信息聚 ...
- 怎样修改日立uax规格表_日立电梯UAX电气原理图纸维修调试资料手册规格表.zip-3-1敷线检查.doc...
日立电梯UAX电气原理图纸维修调试资料手册规格表.zip-3-1敷线检查.doc (2.83 MB) 下载风险提示 若需要下载,请务必先预览(下载的文件和预览的文件一致) 由于本站上传量巨大,来不及对 ...
- 12平键标准尺寸规格表_平键和键槽的标准尺寸规格表
轴径 键 较紧 轴 H9 毂 D10 轴 N8 毂 JS9 轴毂 P9 公称 偏差 公称 偏差 最大 最小 6~8 2× 2 2 +0.025 +0.06 -0.004 -0.006 1.2 1 &g ...
- 12平键标准尺寸规格表_平键标准尺寸|平键和键槽的标准尺寸规格表
平键通过键的侧面和键槽侧面传递扭矩,两侧面间的尺寸是平键连接的重要尺寸,其配合精度较高.下面由贤集网小编为大家介绍平键标准尺寸相关知识,并附上平键和键槽的标准尺寸规格表. 平键的尺寸: 平键的截面尺寸 ...
- 如何用mysql创建orders表_《MySQL必知必会》学习笔记
本书所用的表: 68.png 67.png 66.png 65.png 64.png 63.png 第一章:了解SQL 数据库:保存有组织的数据的容器(通常是一个文件或一组文件). 数据库软件:DBM ...
- mysql交互式创建表_用mysql语句创建数据表详细教程
MySQL不仅用于表数据操纵,而且还可以用来执行数据库和表的所有操作,包括表本身的创建和处理. 一般有两种创建表的方法: 1.使用具有交互式创建和管理表的工具: 2.表也可以直接用MySQL语句操纵. ...
最新文章
- NVIDIA 认证系统
- 硬盘格式化与快速格式化的区别
- linux docker安装mysql_Linux-docker安装mysql
- exp中query的使用方法
- 非索引查询如何提高效率_Python数据分析:数据库索引如何提高效率?
- ST-Link VCP Ctrl驱动安装失败解决(win7 64bits)
- 你真的会用 regexp_replace 吗?
- 在 npm script 中使用环境变量
- html template--(来自网易)
- dout java,java socket 发送文件
- android真实项目教程(六)——落叶醉赤壁_by_CJJ
- MYSQL-常用函数
- ubuntu安装 ssh server
- Multisim使用入门教程
- 聚类算法之层次聚类和密度聚类(图文并茂)
- matlab串联矩阵如何表示,MATLAB串联矩阵
- 简单易懂的讲解深度学习(入门系列之八)
- Java爬虫之利用Jsoup+HttpClient爬取类叔叔不约匿名聊天网站的图片,未果——后爬取某网站美女图片案例
- 珠海沙龙PPT已上传!
- 2022IC秋招面经分享【海光·SOC设计工程师(上海)/紫光展锐(杭州)】