1

我想向销售/订单添加一个属性,即 Mage_Sales_Model_Order,以存储一些额外的数据。

我发现销售/订单资源使用普通表。当我保存订单时,它只保存与表中的列匹配的字段。

添加此属性的正确方法是什么?

4

2 回答 2

3

我会推荐以下几个答案的混合体。您肯定希望通过 config xml 将此代码放入安装脚本中,但如果您想利用 addAttribute 函数,您将希望使用 Mage_Eav_Model_Entity_Setup 作为安装类。所以你的配置 xml 看起来像这样......

<config>
...
    <resources>
        <modulename_setup>
            <setup>
                <module>Your_Module</module>
                <class>Mage_Eav_Model_Entity_Setup</class>
            </setup>               
        </modulename_setup>           
    </resources>
...
</config>

你的安装脚本应该是这样的

$installer = $this;
/* @var $installer Mage_Catalog_Model_Resource_Eav_Mysql4_Setup */

$installer->startSetup();

$installer->addAttribute('sales_order', 'attributename', array(
            'group'             => 'General',
            'label'             => 'Label frontend',
            'note'              => '',
            'type'              => 'string',    //backend_type
            'input'             => 'text', //frontend_input
            'frontend_class'    => '',
            'source'            => '',
            'backend'           => '',
            'frontend'          => '',
            'global'            => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_WEBSITE,
            'required'          => false,
            'visible_on_front'  => false,
            'apply_to'          => 'simple',
            'is_configurable'   => false,
            'used_in_product_listing'   => false,
            'sort_order'        => 5,
        ));

$installer->endSetup();

请记住,这是未经测试的代码,您可能需要调整一些属性选项以使其按您需要的方式运行。

于 2013-04-02T15:31:12.180 回答
0

要在订单上添加新属性,您可以使用此代码,但只需一次。获取任何文件并将代码放在那里,执行一次并可以删除代码。

$setup = new Mage_Eav_Model_Entity_Setup('core_setup');

        $setup->addAttribute('sales_order', 'attributename', array(
            'group'             => 'General',
            'label'             => 'Label frontend',
            'note'              => '',
            'type'              => 'string',    //backend_type
            'input'             => 'text', //frontend_input
            'frontend_class'    => '',
            'source'            => '',
            'backend'           => '',
            'frontend'          => '',
            'global'            => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_WEBSITE,
            'required'          => false,
            'visible_on_front'  => false,
            'apply_to'          => 'simple',
            'is_configurable'   => false,
            'used_in_product_listing'   => false,
            'sort_order'        => 5,
        ));
于 2012-10-23T15:09:24.070 回答