Ric*_*ard -1 php optimization database-design e-commerce
我正在建立一个商业网站,并且一直在研究不同的方式来展示具有变体的产品。我正在尝试对隐形眼镜进行此操作,并想知道最好的方法是什么。
产品可以很简单,例如没有变体的镜片盒或镜片溶液,或者对于隐形眼镜,每个镜片最多可以有三个可配置的变体,具体取决于镜片,用于处方(例如功率,基弧、直径)。
在我的结构中,我有简单的产品,只是一个产品,没有父产品。隐形眼镜将存储为产品,每个变体将存储为引用其父代的单独产品,并且变体本身将使用 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
Run Code Online (Sandbox Code Playgroud)
我的代码已经很慢了,我什至还没有开始构建选择框来选择处方。
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;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用 propel 和 Zend Framework。我以正确的方式处理这件事吗?大多数人需要两个相同类型的镜片,但每只眼睛的处方不同。我将如何实施这个?
我尝试过查看其他系统,例如 magento 和 oscommerce。前者让我感到困惑,我发现后者的代码很混乱。由于这是一次学习经历,我想以最好的方式做事。
谢谢
最好对所有产品和产品变型使用一张表。让基于产品的运营变得更加简单。最终变体只是一种产品。
所以我建议。
products
- id
- parent_id
- name
- price
- type_id
- brand_id
- variant_id
Run Code Online (Sandbox Code Playgroud)
附加字段variant_id应引用变体组。
这样就比较简单了。您可以根据变体组 ID 检索所有变体。
我经常使用亚马逊产品 API。他们的做法与此类似。
| 归档时间: |
|
| 查看次数: |
4455 次 |
| 最近记录: |