Magento:通过安装脚本将属性/列添加到销售表

时间:2012-12-14 17:50:17

标签: php magento magento-1.7

通过安装脚本向magento中的销售和/或报价表添加新属性的正确方法是什么:

  1. 使用Mage_Sales_Model_Entity_Setup
  2. 使用Mage_Sales_Model_Resource_Setup
  3. 然后使用以下哪种方法:

    1. addColumn()
    2. addAttribute()
    3. 它们似乎都允许添加新属性,所以我想知道哪个是正确的,为什么?

1 个答案:

答案 0 :(得分:1)

查看代码的差异是:

来自在Mage_Sales_Model_Entity_Setup中从getConnection返回的DB \ Adapter的addColumn只会向表中添加一列。

Mage_Sales_Model_Resource_Setup中的addAttribute仅用于添加列,如果启用了平面实体,否则它只是在Mage_Eav_Model_Entity_Setup中调用addAttribute,它执行许多操作,包括检查属性是否已存在,验证数据,添加属性选项以及插入属性进入eav_attribute表。

回答你的问题。添加列应该只用于向自己的表添加列。您应该使用属性来扩展销售订单和报价对象。

有关在addMttribute的Mage \ Sales \ sql \ sales_setup中添加属性搜索的正确方法的示例。

以下是我的一个例子:

$installer->addAttribute('order', 'your_attribute_name', array(
    'group'             => 'General', // Defaults to General
    'type'              => 'int',
    'default'           => 0,
    'grid'              => true,
    'required'          => false,
    'visible'           => true,
    'backend'           => '',
    'frontend'          => '',
    'label'             => 'My Attribute',
    'note'              => 'description goes here.',
    'input'             => 'select',
    'class'             => '',
    'source'            => 'eav/entity_attribute_source_boolean',
    'global'            => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
    'visible'           => true,
    'required'          => false,
    'user_defined'      => false,
    'default'           => 0,
    'searchable'        => false,
    'filterable'        => true,
    'comparable'        => false,
    'visible_on_front'  => false,
    'unique'            => false,
    'apply_to'          => 'simple,virtual,configurable,bundle',
));