我正在建立一個商業網站,我一直在研究不同的方式來顯示變體產品。我正在嘗試這樣做隱形眼鏡,並想知道最好的方法是什麼。產品和產品變型的數據庫設計
產品可以是簡單的,例如沒有變型的鏡片盒或鏡片解決方案,或者對於隱形眼鏡,每個鏡片根據鏡片的不同,可以有多達三種可配置的變體(取決於鏡片) (如功率,基準曲線,直徑)。
在我的結構中,我有簡單的產品,只是一個產品,沒有父母。隱形眼鏡將作爲產品存儲,並且每個變體將作爲引用其父母的單獨產品存儲,並且變體本身將使用products_variants錶鏈接。
我有這樣的結構:
products
- id
- parent_id
- name
- price
- type_id
- brand_id
type
- id
- name
brand
- id
- name
product_variant_group
- id
- name
product_variant_value
- id
- product_variant_group_id
- value
products_variants (isCrossRef = true for Propel relationships)
- id
- product_id
- product_variant_value_id
我的代碼是相當緩慢已了,我還沒有開始建立選擇框來選擇處方。
public function getPossibleVariants($productId)
{
$product = ProductQuery::create()->findPk($productId);
$children = $product->getChildren();
$options = array();
foreach ($children as $child) {
if ($child->countProductsVariantss()) {
$variants = $child->getProductVariantValues();
foreach ($variants as $variant) {
$group = $variant->getProductVariantGroup();
$options[$group->getName()][] = $variant->getValue();
}
}
}
ksort($options);
return $options;
}
我使用的是propel和Zend Framework。我是否以正確的方式去做這件事?大多數人需要兩種相同的鏡片類型,但每種眼睛都有不同的處方。我將如何實現這一點?
我試過看其他系統,如magento和oscommerce。前者讓我感到困惑,我發現後者中的代碼很混亂。由於這是一次學習經歷,我想盡可能以最好的方式做事。
謝謝
屬於http://codereview.stackexchange.com/ –