在构建电子商务平台时,我遇到了设计问题。我正在使用内置的CodeIgniter的购物车类。它将所有购物车信息存储在会话中。假设购物车已经填满了产品和用户点击结帐。我应该何时在数据库中存储订单?在那之后点击或在收集信息并在会话中存储它的几个步骤之后?如何处理不同的运输方式等附加功能?我应该先将它添加到篮子中并获得额外的(礼物地址)到会话吗?我不想将它存储在数据库中,因为礼品地址和订单之间的关系是必需的,因为我不知道订单的ID是什么。我很困惑:)此外我认为保持购物车了解运输方式和额外购买的服务至关重要(通过选择礼品地址需要额外费用),因为购物车内容就像收据一样?
简而言之,处理结帐的最佳做法是什么?
答案 0 :(得分:3)
您可以使用"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。
由于您要求提出意见......您应该将不同的送货地址存储在与用户相关的单独地址簿表中,而不是加入订单。当您最终在结账时创建订单时,您应该将所有数据(地址数据和相关产品数据)复制到单独的订单表中,因为产品数据和地址簿数据可能会发生变化;除了状态之外,订单数据应该写一次并且永远不会更新。保存订单后,您可以删除会话数据。