Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 产品和产品变体的数据库设计_Php_Database Design_Optimization_E Commerce - Fatal编程技术网

Php 产品和产品变体的数据库设计

Php 产品和产品变体的数据库设计,php,database-design,optimization,e-commerce,Php,Database Design,Optimization,E Commerce,我正在建立一个商业网站,我一直在研究不同的方式来展示带有变体的产品。我正在试着为隐形眼镜做这个,想知道最好的方法是什么 产品可以是简单的,例如没有变体的镜片盒或镜片溶液,或者在隐形眼镜的情况下,每个镜片最多可以有三种可配置变体,具体取决于处方的镜片(例如,功率、基本曲线、直径) 在我的结构中,我有简单的产品作为一个产品,没有父产品。隐形眼镜将存储为一个产品,每个变体将存储为一个单独的产品,引用其父产品,变体本身将使用products_variants表链接 我的结构如下: products -

我正在建立一个商业网站,我一直在研究不同的方式来展示带有变体的产品。我正在试着为隐形眼镜做这个,想知道最好的方法是什么

产品可以是简单的,例如没有变体的镜片盒或镜片溶液,或者在隐形眼镜的情况下,每个镜片最多可以有三种可配置变体,具体取决于处方的镜片(例如,功率、基本曲线、直径)

在我的结构中,我有简单的产品作为一个产品,没有父产品。隐形眼镜将存储为一个产品,每个变体将存储为一个单独的产品,引用其父产品,变体本身将使用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框架。我这样做对吗?大多数人需要两种相同的镜片类型,但每只眼睛的处方不同。我将如何实现这一点

我试过研究其他系统,比如magento和oscommerce。前者让我困惑,我发现后者的代码凌乱。因为这是一次学习经历,我想用最好的方式做事


谢谢

最好对所有产品和产品变体使用一个表。使基于产品的操作变得更容易。最终,变体只是一种产品

所以我建议

products
- id
- parent_id
- name
- price
- type_id
- brand_id
- variant_id
附加字段
variant\u id
应引用变量组

这样比较简单。您可以根据变体组id检索所有变体

我经常使用Amazon产品API。他们的方法与此类似。

属于