產品表每次更新商品都會變動的,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 模板
### 擴充套件討論:標類與非標
當商品比較容易標準化,規範化時使用型別來決定規格這種形式比較好(根據商品型別定義規格模型),但是有一些場景這樣就不太靈活了,比如當商品很難標準化,規範化時,比如外賣的餐品,不是每乙個餐品都有規格,都有辣度規格,大份小份等規格,所以此時應該尋找另外一種解決方案了,比如使用自定義的規格,這樣就靈活很多了,這裡就有個很好的例項:[這是商品不依賴型別,自定義規格的完美解決方案!]( ,當然如果情況複雜特殊,使用兩種方式結合也是我們願意看到的,不過設計起來可能比較複雜,以後有實際案例再討論。
update:2017-3-16 11:18:03
根據商品規格篩選商品
思路 現將規格陣列拿到,再讓商品陣列的每個規格裡的每一項規格比較,如果規格陣列和某乙個商品的規格全部匹配,則渠道改商品的id 下邊上一些主要 太累了,還未整理,主要難點在於,怎麼判斷規格陣列和商品規格匹配,我讓每乙個商品去和規格陣列比較,如果每一項規格項裡的規格值都和規格陣列匹配,則給乙個空陣列裡新...
商品表(spu) 規格表(sku)設計
這裡拿iphone6s舉例,它身上有很多的屬性和值,比如 spu 指的是商品 iphone6s spu屬性就是不會影響到庫存和 的屬性,又叫關鍵屬性,與商品是一對一的關係,比如 sku指的是具體規格單品 玫瑰金 16g sku屬性就是會影響到庫存和 的屬性,又叫銷售屬性,與商品是多對一的關係,比如 ...
商品表(spu) 規格表(sku)設計
這裡拿iphone6s舉例,它身上有很多的屬性和值,比如 spu 指的是商品 iphone6s spu屬性就是不會影響到庫存和 的屬性,又叫關鍵屬性,與商品是一對一的關係,比如 sku指的是具體規格單品 玫瑰金 16g sku屬性就是會影響到庫存和 的屬性,又叫銷售屬性,與商品是多對一的關係,比如 ...