通过安装脚本向magento中的销售和/或报价表添加新属性的正确方法是什么:
Mage_Sales_Model_Entity_Setup
Mage_Sales_Model_Resource_Setup
然后使用以下哪种方法:
addColumn()
addAttribute()
它们似乎都允许添加新属性,所以我想知道哪个是正确的,为什么?
答案 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',
));