Magento如何在订单商品表中保存新属性

时间:2014-05-29 08:15:48

标签: magento

我创建了一个新属性' Envases'在sales_flat_order_item上。我已经在购物车页面中创建了显示控件,但我不知道如何将其保存在数据库中。

enter image description here

3 个答案:

答案 0 :(得分:1)

我建议你在任何文件上执行脚本。

$setup = new Mage_Eav_Model_Entity_Setup('core_setup');

    $setup->addAttribute('sales_order', 'Envases', array(
        'group'             => 'General',
        'label'             => 'Label frontend',
        'note'              => '',
        'type'              => 'string',    //backend_type
        'input'             => 'text', //frontend_input
        'frontend_class'    => '',
        'source'            => '',
        'backend'           => '',
        'frontend'          => '',
        'global'            => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_WEBSITE,
        'required'          => true,
        'visible_on_front'  => true,
        'apply_to'          => 'simple',
        'is_configurable'   => false,
        'used_in_product_listing'   => false,
        'sort_order'        => 5,
    ));

运行脚本后删除这些代码。

现在您的属性将自动保存。

答案 1 :(得分:1)

尝试以下方法。

$installer = new Mage_Eav_Model_Entity_Setup('core_setup');
/* @var $installer Mage_Sales_Model_Entity_Setup */

$installer->startSetup();

try {
    $installer->run("
    ALTER TABLE {$this->getTable('sales_flat_order_item')} ADD `envases` VARCHAR( 225 ) NOT NULL;
    ");
}
catch (Exception $e) {
}

$installer->installEntities();
$installer->endSetup();

答案 2 :(得分:0)

对于您需要添加到order_item表中的任何自定义属性,您需要按照以下步骤操作,

1.在自定义模块中,添加升级脚本

<?php
$installer = $this;

$installer->startSetup();

$installer->run("
ALTER TABLE sales_flat_quote_item
  ADD COLUMN `envases` int(11) NULL default ''

");

$installer->run("
ALTER TABLE sales_flat_order_item
  ADD COLUMN `envases` int(11) NULL default ''

");

$installer->endSetup();

'envases'是您的自定义属性,

当产品被添加到Magento的购物车中时,它会启动一个存储购物车数据的报价对象。

2.所以,一旦你将你的价值保存到报价中,

      $quote = Mage::getSingleton('checkout/session')->getQuote();
      $quote->setEnvases('someValue');
      $quote->save();

在config.xml中,添加此代码

 <global>

       <fieldsets>
                      <sales_convert_quote>
                          <envases>
                              <to_order_item>*</to_order_item>
                          </envases>
       </fieldsets>
    </global>

此处*表示sales_flat_quote_item和sales_flat_order_item表中的字段名称相同。

单击下订单后,将读取合并的config.xml节点,它将更新您的order_item表。

希望这有帮助!