Magento-自定义属性导致空白订单号

时间:2010-03-17 16:11:10

标签: magento attributes

我在销售/订单实体上创建了一个简单的自定义属性。现在,对于新订单,订单号为空。我查看了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>

感谢。

4 个答案:

答案 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追踪器。