【问题标题】:CodeIgniter based e-shop, shipping and gift address design problem基于 CodeIgniter 的电子商店、运输和礼品地址设计问题
【发布时间】:2010-12-18 14:17:10
【问题描述】:
在构建电子商务平台时,我遇到了设计问题。我正在使用内置的 CodeIgniter 的购物车类。它将所有购物车信息存储在会话中。假设购物车已经装满了产品并且用户点击了结帐。我应该什么时候将订单存储在数据库中?就在点击之后还是在收集信息并将其存储在会话中的几个步骤之后?如何处理不同的运输方式等附加功能?我是否应该先将其添加到购物篮并在会话中获得额外的(礼物地址)?我不想将它存储在数据库中,因为需要礼物地址和订单之间的关系,而且我不知道订单的 ID 是什么。我很困惑 :) 此外,我认为让购物车了解运输方式和额外购买的服务(通过选择礼品地址需要额外费用)至关重要,因为购物车内容就像收据?
简而言之,处理结帐的最佳做法是什么?
【问题讨论】:
标签:
php
codeigniter
e-commerce
cart
shipping
【解决方案1】:
您可以使用"options" value of the cart 向您的购物车商品添加其他属性(如送货选项)。
$data = array(
'id' => 'sku_123ABC',
'qty' => 1,
'price' => 39.95,
'name' => 'T-Shirt',
'options' => array('shipId' => '1234abcd5678efghi')
);
$this->cart->insert($data);
请记住,您不需要数据库中的增量 ID;您可以使用 uniqid() 或 com_create_guid() 创建唯一 ID。
既然您要征求意见...您应该将不同的送货地址存储在与用户相关的单独地址簿表中,而不是加入订单。当您最终创建订单作为结账的一部分时,您应该将所有数据(地址数据和相关产品数据)复制到单独的订单表中,因为产品数据和地址簿数据可以更改;除了状态之外,订单数据应该被写入一次并且永远不会更新。订单保存后,您可以删除会话数据。