我正在建立一个商业网站,我一直在研究不同的方式来显示变体产品。我正在尝试这样做隐形眼镜,并想知道最好的方法是什么。产品和产品变型的数据库设计
产品可以是简单的,例如没有变型的镜片盒或镜片解决方案,或者对于隐形眼镜,每个镜片根据镜片的不同,可以有多达三种可配置的变体(取决于镜片) (如功率,基准曲线,直径)。
在我的结构中,我有简单的产品,只是一个产品,没有父母。隐形眼镜将作为产品存储,并且每个变体将作为引用其父母的单独产品存储,并且变体本身将使用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/ –