Php Magento:通过安装脚本向sales表添加属性/列

Php Magento:通过安装脚本向sales表添加属性/列,php,magento,magento-1.7,Php,Magento,Magento 1.7,通过安装脚本向magento中的sales和/或quote表添加新属性的正确方法是什么: 使用Mage\u Sales\u Model\u Entity\u Setup 使用Mage\u Sales\u Model\u Resource\u Setup 然后使用以下哪种方法: addColumn() addAttribute() 它们似乎都允许添加新属性,因此我想知道哪一个是正确的,为什么?查看代码,区别在于: addColumn来自一个DB\适配器,该适配器在Mage\u Sales\u Mo

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

  • 使用
    Mage\u Sales\u Model\u Entity\u Setup
  • 使用
    Mage\u Sales\u Model\u Resource\u Setup
  • 然后使用以下哪种方法:

  • addColumn()
  • addAttribute()

  • 它们似乎都允许添加新属性,因此我想知道哪一个是正确的,为什么?

    查看代码,区别在于:

    addColumn来自一个DB\适配器,该适配器在Mage\u Sales\u Model\u Entity\u安装程序中从getConnection返回,它只向表中添加一列

    Mage_Sales_Model_Resource_设置中的addAttribute仅在启用平面实体的情况下用于添加列,否则它只需在Mage_Eav_Model_Entity_设置中调用addAttribute,该设置会执行许多操作,包括检查属性是否已存在、验证数据、,添加属性选项并将属性插入eav_属性表

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

    有关添加属性的正确方法的示例,请在addAttribute的Mage\Sales\sql\Sales\U设置中进行搜索

    下面是我的一个例子:

    $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',
    ));