从管理面板创建属性


Create attributes from the admin panel

我被要求为站点管理员提供在数据库表中创建属性的可能性。网站上有卖家和买家,每个卖家在添加某个产品时,都会填写特定产品所需的字段,然后发布产品。我对这将如何工作感到困惑。如果每个产品都有特定的字段,那么这意味着如果网站有 2.000 个产品,我将有 2.000 个表?我从来没有做过这样的事情,所以我真的不知道如何处理这个问题。此外,在管理功能上创建属性。假设该产品是西红柿。管理员为西红柿添加了名为"条件"的字段,它具有"冷冻"和"新鲜"等选项。然后,当一些卖家试图创造番茄产品时,他们需要选择番茄的状况是新鲜的还是冷冻的。我想到了一个可能的解决方案,例如创建一个将保存 文本的表,然后创建另一个将保存

.

product_tomato(product_id、user_id、名称、描述、条件)

product_select( select_id, product_id, select_text)

product_option( option_id, select_id, option_text)

所以,这就是我想象的桌子来做这件事。因此,当管理员向产品表添加字段时,我将在产品表中添加一列,然后在prodcut_select表中创建新行,然后在product_option表中列出可能的选项。但后来我对如何在产品页面上显示它感到困惑。当我不知道管理员创建的列的名称是什么时,我将如何在代码中处理这个问题?

这个问题的措辞非常混乱,但我相信我明白你在说什么的要点。

不,你不会为每个产品制作一张桌子,那很快就会变得荒谬。 对于具有三个表的多个产品,您可以轻松处理此问题。

Tables:
Product
Product_Attributes
Seller_Product

让我们以您假设的有条件的西红柿为例。

管理员决定他的网站现在将提供西红柿作为产品。 他创建一个产品,并将其添加到产品表中。 然后,他决定西红柿应该有一个"条件"属性,该属性有两个可能的值,新鲜和冷冻。 因此,他将向Product_Attributes表添加两行,其中包含三个字段(产品、条件、值)。

因此,您的表现在将如下所示。

Product Table:
*Name |*
Tomato
Product_Attribute Table:
*Product | Attribute | Value*
Tomato | Condition | Fresh
Tomato | Condition | Frozen

最后,当您的卖家将商品添加到网站商店或其他任何内容时,您将让他们将数据输入到一个表单中,该表单从该产品的Product_Attribute表中获取条件和潜在值。 在这种情况下,只有一个属性,因此他们只会填写条件。 假设有两个卖家,吉姆和汤姆,分别出售新鲜和冷冻西红柿。 最后三个表如下所示。

Product Table:
*Name |*
Tomato
Product_Attribute Table:
*Product | Attribute | Value*
Tomato | Condition | Fresh
Tomato | Condition | Frozen
Seller Product Table:
*Seller | Product| Attribute | Value*
Jim | Tomato | Condition | Fresh
Tom | Tomato | Condition | Frozen

这样,您可以使用三个表存储有关产品的各种自定义字段。 您应该根据需要规范化或非规范化,您可能只需要一个用于卖家产品的表,并将其条件存储在单独的表中。 无论哪种方式,上述方法都可以完成工作。

我相信

这是一个很好的方案:

product_data - 产品 ID、类别 ID、名称、价格、描述

product_meta - 产品 ID、attribute_name、attribute_value

product_variants - 产品 ID、多属性 ID、多属性值

您还需要为款式/规格名称和类别名称/说明提供单独的表格。

例:

ID  | Category_ID | Name   | Price
251 | 14          | Tomato | 5.00
ID  | Attribute | Value
251 | Condition | Fresh
251 | Color     | Red
ID  | Variant_ID | Name | Value
251 | 50         | Size | Small
251 | 50         | Size | Huge

所以基本上你会有大约 5-10 个表格(谷歌数据库规范化的 3 个步骤)。所有表都通过 ID 链接在一起。

您需要做的就是 - 使用语句和WHERE product_id条件检索值JOIN