【发布时间】:2012-07-13 00:52:23
【问题描述】:
我想将自定义信息保存在order_item-table。这些信息在购物车中创建。所以我按照this 帖子中的描述进行操作。
我已经安装了属性:
$installer->addAttribute('quote_item', 'final_delivery_time', $settings);
$installer->addAttribute('order_item', 'final_delivery_time', $settings);
在 config.xml 中声明字段集
<fieldset>
<sales_convert_quote_item>
<final_delivery_time>
<to_order_item>final_delivery_time</to_order_item>
</final_delivery_time>
</sales_convert_quote_item>
<sales_convert_order_item>
<final_delivery_time>
<to_quote_item>*</to_quote_item>
<to_invoice_item>*</to_invoice_item>
<to_shipment_item>*</to_shipment_item>
<to_cm_item>*</to_cm_item>
</final_delivery_time>
</sales_convert_order_item>
</fieldset>
例如购物车中的一些代码
$oQuote = Mage::getSingleton('checkout/session')->getQuote();
foreach ( $oQuote->getAllItems() as $_item )
{
$orderItemId = $_item->getId();
$_item->setFinalDeliveryTime('some Value');
$_item->save();
}
所以我得到了一个报价,我在 sales_flat_quote_item 表中有我的字段 final_delivery_time 和这个值
我在onepage-review下单后,sales_flat_order_item table应该也有这个字段,但是什么都没有。列中代表null。
所以我需要按顺序保存的字段的值。
【问题讨论】:
-
请指定文件路径和代码中您放置最后一个代码位的位置。
-
为了进行测试,我在帮助程序中执行此操作,并在我的设计中使用
echo $deliveryTimeHelper->setDeliveryTimeInOrder();在 .../template/checkout/cart/item/default.phtml 中调用它们。这是可行的,因为我在表 sales_flat_quote_item 中看到了每个 phpmyadmin 的值。我还在结帐的审核步骤中使用public function getDeliveryTimeInOrder() { $quote = Mage::getModel('checkout/cart')->getQuote(); $delTime = ''; foreach ( $quote->getAllItems() as $_item ) { $delTime.=$_item->getFinalDeliveryTime(); } return $delTime; }调用它 -
下订单后,值仍在 sales_flat_quote_item 表中,但不在 sales_flat_order_table 中
-
您能否追踪并检查
getQuote()是否返回了报价对象? -
是的,我用
Mage::getModel('checkout/cart')->getItems();和Mage::getSingleton('checkout/session')->getQuote();试试这个,当我浏览这些项目时,我得到了正确的值 ($_item->getFinalDeliveryTime();)