我创建了一个新属性' Envases'在sales_flat_order_item上。我已经在购物车页面中创建了显示控件,但我不知道如何将其保存在数据库中。
答案 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表。
希望这有帮助!