インストールスクリプトを介してmagentoのsalesおよび/またはquoteテーブルに新しい属性を追加する正しい方法は何ですか?
- 使用する
Mage_Sales_Model_Entity_Setup
- 使用する
Mage_Sales_Model_Resource_Setup
次に、これらの方法のどれを使用するか:
addColumn()
addAttribute()
それらはすべて新しい属性を追加できるように見えるので、どれが正しいのか、そしてその理由は何ですか?
インストールスクリプトを介してmagentoのsalesおよび/またはquoteテーブルに新しい属性を追加する正しい方法は何ですか?
Mage_Sales_Model_Entity_Setup
Mage_Sales_Model_Resource_Setup
次に、これらの方法のどれを使用するか:
addColumn()
addAttribute()
それらはすべて新しい属性を追加できるように見えるので、どれが正しいのか、そしてその理由は何ですか?
コードを見ると、違いは次のとおりです。
Mage_Sales_Model_Entity_SetupのgetConnectionから返されるDB\AdapterからのaddColumnは、テーブルに列を追加するだけです。
Mage_Sales_Model_Resource_SetupのaddAttributeは、フラットエンティティが有効になっている場合にのみ列を追加するためにあります。それ以外の場合は、Mage_Eav_Model_Entity_SetupのaddAttributeを呼び出すだけで、属性が既に存在するかどうかの確認、データの検証、属性オプションの追加、eav_attributeへの属性の挿入などの多くの処理を実行します。テーブル。
あなたの質問に答えるために。[列の追加]は、おそらく独自のテーブルに列を追加するためにのみ使用する必要があります。おそらく、属性を使用して販売注文と見積もりオブジェクトを拡張する必要があります。
属性を追加する正しい方法の例については、Mage \ Sales \ sql\sales_setupでaddAttributeを検索してください。
これが私の1つの例です:
$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',
));