我在销售/订单实体上创建了一个简单的自定义属性。现在,对于新订单,订单号为空。我查看了sales_order表,果然,increment_id为null ......任何人都可以帮助我,我很难过吗?
这是我的setup.php:
`public function getDefaultEntities() {
return array(
'order' => array(
'entity_model' => 'sales/order',
//'attribute_model' => 'catalog/resource_eav_attribute',
'table' => 'sales/order',
'attributes' => array(
'pr_email_sent' => array(
'label' => 'prEmailSent',
'type' => 'varchar',
'default' => 'false'
),
)
)
);
}`
这是我的config.xml
<fieldsets>
<sales_order>
<pr_email_sent><create>1</create><update>1</update></pr_email_sent>
</sales_order>
</fieldsets>
感谢。
答案 0 :(得分:1)
我不相信这是一个错误。我不久前遇到了同样的问题。问题在于您没有在getDefaultEntities()中包含所有必要的信息。你最终做的方式有效,但不是最好的方法。您只是缺少设置订单数组的一些部分。这应该是它的样子:
public function getDefaultEntities()
{
return array(
'order' => array(
'entity_model' => 'sales/order',
'table' => 'sales/order',
'increment_model' => 'eav/entity_increment_numeric',
'increment_per_store' => true,
'backend_prefix' => 'sales_entity/order_attribute_backend',
'attributes' => array(
'pr_email_sent' => array(
'label' => 'prEmailSent',
'type' => 'varchar',
'default' => 'false'
)
)
)
);
}
答案 1 :(得分:0)
您的新属性是否已成功创建?您可以查看eav_attribute表以查看您的属性是否已列出。
答案 2 :(得分:0)
我通过废弃setup.php文件解决了这个问题,并在我的mysql4-install-0.1.0.php中做了以下事情:
<?php
// file mysql4-install-0.1.0.php
$installer = $this;
$setup = new Mage_Eav_Model_Entity_Setup('sales_setup');
$installer->startSetup();
$setup->addAttribute('order', 'pr_email_sent', array('type' => 'text',
'default' => 'false'
)
);
$installer->endSetup();
?>
现在就像魅力一样。不知道有什么区别,除了显而易见的...... Magento缺乏文档是非常没有吸引力的。
答案 3 :(得分:0)
我自己遇到了这个并设法解决了这个问题。通过使用getDefaultEntities函数,我们最终会覆盖eav_entity_type表中sales_order的increment_model属性。
似乎覆盖了increment_model和increment_per_store字段。
很高兴看到你用上面的方法搞清楚了。我将自己使用它: - )
BTW,将把这个提交给Magento的bug追踪器。