网站logo的作用,南平做网站,WordPress查询登录记录,六安网站制作哪里有产品表每次更新商品都会变动的#xff0c;ID不能用#xff0c;可是购物车还是用了#xff0c;这就导致每次保存商品#xff0c;哪怕什么都没有改动#xff0c;也会导致用户的购物车失效。~~~其实可以考虑不是每次更新商品就除所有的SKU#xff0c;毕竟有时什么都没修改呢…产品表每次更新商品都会变动的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:$specValexplode(,,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) 当然如果情况复杂特殊使用两种方式结合也是我们愿意看到的不过设计起来可能比较复杂以后有实际案例再讨论。* * * * *update2017-3-16 11:18:03