Magento 1.7 - 将属性添加到order_item并设置值

时间:2013-01-15 12:03:56

标签: magento magento-1.7

我想向order_item

添加新属性

安装-0.1.0.php

$installer->addAttribute('order_item', 'xxx', array('type'=>'text', 'visible' => true, 'required' => false, 'is_user_defined' => true, 'note' => 'Field comment'));  
$installer->addAttribute('quote_item', 'xxx', array('type'=>'text', 'visible' => true, 'required' => false, 'is_user_defined' => true, 'note' => 'Field comment'));

我在eav_attribute

中看到了2个新行

screenshot

运行这两次不打印任何内容:

    $item = Mage::getModel('sales/order_item');
    $item->load(91);

    $item->setXxx("test");
    $item->setData("xxx", "test");

    print $item->getXxx();

    $item->save();

如何在此属性的订单商品中设置和获取值?

1 个答案:

答案 0 :(得分:2)

不幸的是sales/ordersales/order_item没有继承或使用Magento中的eav_attribute结构。这篇博文很好地解释了它:http://www.krilion.net/blog/2012/08/adding-a-custom-attribute-to-a-magento-order/

它的要点是,您需要创建安装程序脚本以在平面表(sales_flat_order_item)中创建新列,以便保存新值。只要平面表中有xxx列,您就应该能够保存xxx值。这意味着您的安装程序脚本需要扩展Mage_Sales_Model_Mysql4_Setup而不是Mage_Eav_Model_Entity_Setup