Schema 使用Magento中的订单保存额外数据
我必须在“订单”页面中添加一列,这意味着在Schema 使用Magento中的订单保存额外数据,schema,magento,Schema,Magento,我必须在“订单”页面中添加一列,这意味着在销售\平面\订单\网格中添加一列。这两个都是可能的,但是我不知道如何添加一个值,以便将其保存在我的新列中 我也必须注册新属性吗? 该值不在报价中,因此我想我不需要在config/global/fieldset/sales\u convert\u quote下注册,因为该值不在那里进行转换 使用Magento Enterprise 1.8。您必须添加属性,最好的方法是通过扩展更新或设置脚本。由于order和quote是基于平面表结构的,这实际上意味着向这些
销售\平面\订单\网格中添加一列
。这两个都是可能的,但是我不知道如何添加一个值,以便将其保存在我的新列中
我也必须注册新属性吗?该值不在报价中,因此我想我不需要在
config/global/fieldset/sales\u convert\u quote下注册,因为该值不在那里进行转换
使用Magento Enterprise 1.8。您必须添加属性,最好的方法是通过扩展更新或设置脚本。由于order和quote是基于平面表结构的,这实际上意味着向这些表添加更多字段
也请看经过大量的尝试和错误-大量的错误-我想我现在已经有了
首先,sales\u flat\u order\u grid
在Mage\u sales\u Model\u Mysql4\u order\u Abstract::updateGridRecords()
中更新,通过遵循我制定的线索,它检查“主”表(sales\u flat\u order
)和主表+“\u grid”(sales\u flat\u order\u grid
),获取其列的交集并从中构造查询。因此,网格表中需要的任何列也必须位于主表中。它不是EAV样式的实体,因此不需要创建属性。
以下是我的安装脚本:
<?php
/* @var $this Nexxt_Booth_Model_Entity_Setup */
$installer = $this;
$installer->getConnection()->addColumn($installer->getTable('sales_flat_order'), 'box_num', 'varchar(255)');
$installer->getConnection()->addColumn($installer->getTable('sales_flat_order_grid'), 'box_num', 'varchar(255)');
类似地,在My/Module/Block/Adminhtml/Customer/Edit/Tab/Orders.php和My/Module/Block/Adminhtml/Customer/Edit/Tab/View/Orders.php中,我添加了以下功能:
protected function _prepareColumns()
{
$this->addColumn('box_num', array(
'header' => $this->__('Box #'),
'index' => 'box_num',
'width' => '100px'
));
$this->addColumnsOrder('box_num', (Mage::app()->isSingleStoreMode() ? 'grand_total' : 'store_id'));
return parent::_prepareColumns();
}
最后,为了结束,在事件sales\u convert\u quote\u to\u order
中,我填充了新字段。这一点并不重要,只要您在保存订单之前的某个点添加数据即可
$order->setBoxNum('DATA GOES HERE');
此外,您还可以使用它向sales\u flat和sales\u flat\u网格添加新的“属性”(at实际上是一列,因为它是平面的)
$installer->addAttribute('order', 'box_num', array(
'label' => 'Box Number',
'type' => 'varchar',
'grid' => true // this is important
));
您的安装程序必须是:Mage_Sales_Model_Entity_Setup才能使用网格密钥
请记住,如果要将现有列D从sales_flat_order添加到sales_flat_order_grid,则需要重新同步sales_flat_order_grid表:
在我的例子中,我必须使用Mage\u Sales\u Model\u Resource\u Setup
类来完成这个任务。使用Mage\u Sales\u Model\u Entity\u Setup
类创建属性似乎没有任何作用(没有创建新的db列,但也没有错误)。我正试图做完全相同的事情,我在Sales\u flat\u order\u网格中创建了一个新列作为barcode\u no,并使用grid.php在magento orders网格中显示该列。现在,我如何将条形码\u no value从magento后端存储到sales\u flat\u order\u grid table中?@ShujaatShaikh您在哪一位遇到了问题?我在哪里都找不到tuturial,解释如何从magento admin后端将自定义值插入我的php数据库。任何文章都会很有帮助!我想您需要向订单视图页面添加一个输入。这太复杂了,这里无法解释。它本身就应该有一个完整的问题。我建议从看礼物信息框开始,试着理解它需要的所有东西。它在订单页面上有一个表单、一个AJAX脚本和一个更新订单的控制器。
$order->setBoxNum('DATA GOES HERE');
$installer->addAttribute('order', 'box_num', array(
'label' => 'Box Number',
'type' => 'varchar',
'grid' => true // this is important
));