Codeigniter购物车:特价商品,购物车内容的定制价格 - 如何接近?

时间:2012-12-08 10:37:40

标签: codeigniter cart

我用推车成功创建了简单的网络应用程序。

现在我需要实施一些特别优惠。

示例1:如果客户添加了2件产品 - 第二件应该减少30%。

示例2:如果客户添加product_1和product_2 - 那么我必须免费添加产品3。

实现业务逻辑本身没有问题。

问题是,我在Codeigniter购物车中没有产品详细信息。

项目对象/数组中有idnameqtypricesubtotaloptions字段。

要重新计算价格而不在每次购物车更改时查询数据库,我需要一些额外的字段,例如组/类别,它们告诉我哪种特殊优惠适用于该产品。

此外 - 我需要在某个地方存储基本价格,因为当客户从购物车中删除某些产品时 - 我需要在那里放置旧价格。

我应该在哪里添加其他信息?

options字段已被使用...

我不想在每次购物车更新时查询数据库(我希望我的网络应用程序非常快,我希望最小的服务器负载)。

当我更改某个购物车项目的价格时,我预计这些rowid会出现一些问题吗?

我问这个问题,因为购物车唯一的'rowid'是商品idoptions数组的md5校验和。我的应用程序将使用相同选项的同一产品的不同价格(例如,一件正常价格,另一件价格为70%)。

2 个答案:

答案 0 :(得分:1)

Codeigniter推车会让你入门,但对于任何类型的定制,我建议你自己做推车,会更容易。请记住,购物车所要做的就是存储产品ID和数量。而已。其他一切都是为了查看购物车和创建订单。订单总计与购物车分开,因为对于大多数订单,将有其他费用,如运费/税。和/或可能有促销改变最终价格。

因此,您可能决定在购物车中加入产品名称,以便更容易展示。并且存储船的重量是合理的。但即使将价格存入购物车也是危险的。如果在购物者购物时提高或降低价格怎么办?这些可能是边缘情况,但它会向您显示购物车中的信息是如何“陈旧”的。

您引用的示例很棒,因为您很快就会看到 - 购物车是为了一次跟踪一个订单项而构建的。对于任何类型的逻辑 - 如果你购买其中的3个,你可以免费获得第三个 - 你可以将这种逻辑构建到购物车中 - 但它会很快变成混乱的意大利面!

那该怎么办?获取购物车对象 - 使用您的购物车商品 - 并将其传递给促销模型。促销模型遍历购物车中的所有商品 - 然后进行调整 - 这些调整将传递给您的订单方法。通过推广模式,我们将促销的业务规则与购物车分开。最重要的是

我们没有更改购物车中的任何内容!

我们将促销应用于购物车中的商品。更加灵活,并且很容易向人们展示他们节省了多少钱,因为你还没有尝试重写原车定价。

答案 1 :(得分:0)

我意识到,options可以是数组数组,我可以在那里存储任何其他数据。

我将使用该数组,我认为没有必要扩展标准的Cart库。