Magento - 向sales_flat_quote_item和sales_flat_order_item添加新列

Sha*_*351 4 php magento magento-1.4

我正在使用Magento版本1.4.1.1,我想在sales_flat_quote_item表中保存一个值(并传递给它sales_flat_order_item).

我已经找到了这个教程,但我不确定它是否仍然相关(对于Magento版本1.4.1.1),因为它谈到了一个名为的表sales_order,我相信现在sales_flat_order看起来有点不同.

该方法是否仍然有效?如果是这样的-我可以用它sales_flat_quote_itemsales_flat_order_item什么entity_type_id我应该放在称道:

`insert into eav_attribute('entity_type_id','attribute_code','attribute_model','backend_model','backend_type','backend_table','frontend_model','frontend_input','frontend_input_renderer','frontend_label','frontend_class','source_model','is_global','is_visible','is_required','is_user_defined','default_value','is_searchable','is_filterable','is_comparable','is_visible_on_front','is_html_allowed_on_front','is_unique','is_used_for_price_rules','is_filterable_in_search','used_in_product_listing','used_for_sort_by','is_configurable','apply_to','position','note','is_visible_in_advanced_search'  )  
values(11, 'my_new_column', null, '', 'static', '', '', 'text', '','',null, '', 1,1,1,0,'',0,0,0,0,0,0,1,0,0,0,1,'',0,'',0);`
Run Code Online (Sandbox Code Playgroud)

如果在新的Magento版本中不是这样做的话,我应该怎么做?

谢谢,Shani

Iva*_*nyi 12

  1. 创建一个具有扩展自己的安装类的新模块,Mage_Sales_Model_Mysql4_Setup或者仅将其用作模块安装类config.xml:

     <global>
         <resources>
             <your_module_setup>
                  <setup>
                      <module>Your_Module</module>
                      <class>Mage_Sales_Model_Mysql4_Setup</class>
                  </setup>
             </your_module_setup>
         </resources>
     </global>
    
    Run Code Online (Sandbox Code Playgroud)
  2. addAttribute($entity, $attributeCode, $options)在您的安装脚本中使用方法,它会自动向sales_flat_order添加一个新列.对其他人也一样.

    $installer = $this;
    $installer->startSetup();
    $installer->addAttribute(
        'order', 
        'your_attribute_code', 
        array(
            'type' => 'int', /* varchar, text, decimal, datetime */,
            'grid' => false /* or true if you wan't use this attribute on orders grid page */
        )
    );
    $installer->endSetup();
    
    Run Code Online (Sandbox Code Playgroud)

  • 感谢Ivan - 作为未来参考的注释,这个答案的关键点是使用`Mage_Sales_Model_Mysql4_Setup`,而不是标准的`Mage_Eav_Model_Entity_Setup`.`Mage_Sales_Model_Mysql4_Setup`方法将拦截`order_item`和`quote_item`对象的`addAttribute`,这些对象没有标准Setup类所寻找的正式`entity_type_id`值. (3认同)