0

我正在制作一个需要成为多商店解决方案的电子商务解决方案。在建立产品及其功能之间的关联时,我被严重卡住了。由于它是一个多商店解决方案,我需要每个产品的动态功能可能性。我想出了三个实体:Product、FeatureKind 和 FeatureValue。

  • FeatureKind 具有基本特征名称,如Size、Color、Style等。还具有与 FeatureValue 实体的 M:M 连接
  • FeatureValue 显然包含 FeatureKind 的值,例如Small、Medium、Green、Red、Blue、Full-Sleeved等。
  • 产品实体通过 M:M 关联连接到 FeatureKind

我在这种类型的结构中遇到了一些问题:

  • 如果我有一个只有 Small size的 Product 怎么办,它也不应该在选项中显示 Medium 。如果一个产品只有绿色,它不应该同时显示红色和绿色,等等。
  • 其次,如果我的产品只有小号绿色和大号红色怎么办?这将如何解决?

我确定我需要同时改变我的结构和架构,幸运的是该项目在 Symfony2 中,我只需要制作产品包。

我很乐意在这里发布实体,但我的问题是概念而不是代码。如果您需要查看它,只需发表评论,我将编辑问题。

4

1 回答 1

0

根据您的用例,功能实体应该是 STI。您可以创建从特征实体分支出来的不同实体,以映射不同的特征,例如颜色、大小或体积。您需要创建一个连接表,以在 M:M 关系下将 Product 实体与 Feature 实体连接起来。

在此处阅读有关 STI 的更多信息。

/**
 * @Entity
 * @InheritanceType("SINGLE_TABLE")
 * @DiscriminatorColumn(name="discr", type="string")
 * @DiscriminatorMap({"feature" = "Feature", "color" = "Color", "size" = "Size"})
 */
class Feature
{
    // ...
}

/**
 * @Entity
 */
class Color extends Feature
{
    // ...
}
于 2012-09-10T20:15:55.577 回答