0

我正在创建一个购物车,我试图在其中添加不同类型的产品,例如Mobilesclothes。我创建了一个add_to_cart方法并将产品添加到会话中,最后我将所有产品保存到数据库表中。但是现在我很困惑如何添加不同的产品,因为不同产品的参数不同,例如

1. product_id, quantity, price for mobile.
2. product_id, quantity, price, size for cloths.
....

add_to_cart()我应该为不同类型的产品创建不同的方法吗?

4

4 回答 4

0

只要产品至少有一些共同的领域,编写不同的方法并不完全合理。

其他属性可以简单地作为键值对传递。

将数据写入数据库时​​,可以应用EAV 建模

于 2012-05-21T10:18:36.953 回答
0

您可以将基本常见的东西保留在主数组和规范数组中,如下所示 Products[mobile] =>array(name => 'test1', price =>'20' specification=array('color'=>red,model= >'N70'等......))

Products[cloths] =>array(name => 'test1', price =>'30' specification=array('size'=>'XL',color=>'yello',etc......))

于 2012-05-21T11:41:24.120 回答
0

在您的场景中,最好将产品选项作为 JSON 字符串发送,然后在服务器端对其进行解码,这样您就不必担心每个产品的不同选项。

所以产品一可能有如下选项:

{color: "black", size: "large"}

产品二可能有:

{memory: "2 GB", harddisk: "750 GB"}

等等

于 2012-05-21T10:14:53.990 回答
0

您可以继续使用add_to_cart()

相反,您将添加一个数组参数,例如“属性”或“额外”,并在那里添加特定/唯一的产品值键。

然后在数据库中创建一个可变大小的“属性”列,例如。VARCHAR(128) 并添加那些编码为JSON的属性

您仍然可以使用 "LIKE '%"attribute" :%'" (json) 搜索任何产品

这不会强迫您为每个新产品属性创建额外的列。

于 2012-05-21T10:27:42.107 回答