产品表每次更新商品都会变动的,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 商品规格表_商品规格分析相关推荐

  1. 12平键标准尺寸规格表_普通平键规格尺寸表

    普通平键规格尺寸表 普通平键规格尺寸表hbLR=b/2c×45°或 r6.31.61.6 dd-t1+hb键的公称尺寸 键槽尺寸轴槽深 t 毂槽深 t1 圆角半径轴径d b(h9) h(h11)c 或 ...

  2. 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- ...

  3. mysql 商品规格表_完成后台管理系统功能(九)商品规格列表的展示,添加以及删除...

    商品规格的实现图: 规律: 1.同一类商品的规格项分组相同. 2.同一类商品的规格项目是相同的.规格项目是跟商品关联. 3.不同商品规格参数的值是不同的 1 页面效果展示: 2.规格列表的展示功能 用 ...

  4. mysql中设计suk表_电商项目-商品表(spu)、规格表(sku)设计

    之前在工作中,需要实现商品规格功能,做了很长一段时间,现在回过头来整理下设计思路. sku,spu概念: SPU = Standard Product Unit (标准化产品单元),SPU是商品信息聚 ...

  5. 怎样修改日立uax规格表_日立电梯UAX电气原理图纸维修调试资料手册规格表.zip-3-1敷线检查.doc...

    日立电梯UAX电气原理图纸维修调试资料手册规格表.zip-3-1敷线检查.doc (2.83 MB) 下载风险提示 若需要下载,请务必先预览(下载的文件和预览的文件一致) 由于本站上传量巨大,来不及对 ...

  6. 12平键标准尺寸规格表_平键和键槽的标准尺寸规格表

    轴径 键 较紧 轴 H9 毂 D10 轴 N8 毂 JS9 轴毂 P9 公称 偏差 公称 偏差 最大 最小 6~8 2× 2 2 +0.025 +0.06 -0.004 -0.006 1.2 1 &g ...

  7. 12平键标准尺寸规格表_平键标准尺寸|平键和键槽的标准尺寸规格表

    平键通过键的侧面和键槽侧面传递扭矩,两侧面间的尺寸是平键连接的重要尺寸,其配合精度较高.下面由贤集网小编为大家介绍平键标准尺寸相关知识,并附上平键和键槽的标准尺寸规格表. 平键的尺寸: 平键的截面尺寸 ...

  8. 如何用mysql创建orders表_《MySQL必知必会》学习笔记

    本书所用的表: 68.png 67.png 66.png 65.png 64.png 63.png 第一章:了解SQL 数据库:保存有组织的数据的容器(通常是一个文件或一组文件). 数据库软件:DBM ...

  9. mysql交互式创建表_用mysql语句创建数据表详细教程

    MySQL不仅用于表数据操纵,而且还可以用来执行数据库和表的所有操作,包括表本身的创建和处理. 一般有两种创建表的方法: 1.使用具有交互式创建和管理表的工具: 2.表也可以直接用MySQL语句操纵. ...

最新文章

  1. NVIDIA 认证系统
  2. 硬盘格式化与快速格式化的区别
  3. linux docker安装mysql_Linux-docker安装mysql
  4. exp中query的使用方法
  5. 非索引查询如何提高效率_Python数据分析:数据库索引如何提高效率?
  6. ST-Link VCP Ctrl驱动安装失败解决(win7 64bits)
  7. 你真的会用 regexp_replace 吗?
  8. 在 npm script 中使用环境变量
  9. html template--(来自网易)
  10. dout java,java socket 发送文件
  11. android真实项目教程(六)——落叶醉赤壁_by_CJJ
  12. MYSQL-常用函数
  13. ubuntu安装 ssh server
  14. Multisim使用入门教程
  15. 聚类算法之层次聚类和密度聚类(图文并茂)
  16. matlab串联矩阵如何表示,MATLAB串联矩阵
  17. 简单易懂的讲解深度学习(入门系列之八)
  18. Java爬虫之利用Jsoup+HttpClient爬取类叔叔不约匿名聊天网站的图片,未果——后爬取某网站美女图片案例
  19. 珠海沙龙PPT已上传!
  20. 2022IC秋招面经分享【海光·SOC设计工程师(上海)/紫光展锐(杭州)】

热门文章

  1. 327 玉米田(状态压缩dp)
  2. airtest 获取分辨率 绝对坐标 相对坐标
  3. 互联网+人社峰会召开腾讯开放三大能力建“人社”生态
  4. 基于51单片机的万年历proteus仿真原理图方案设计
  5. 笔记本电脑键盘被锁如何解锁
  6. 关于SQLServer2005的学习笔记——CTE递归和模拟测试数据
  7. SAP_MM常用增强
  8. oracle起监听命令,lsnrctl oracle 监听器 命令行 操作命令 lsnrctl services
  9. BufferedRead
  10. 正则表达式匹配标签里面的内容