起源…
我有一个带有安装脚本的模块(常见的mysql4-upgrade-0.1.0-0.1.1.PHP),添加了一个引用的属性:
$eav = new Mage_Eav_Model_Entity_Setup('sales_setup');
$eav->addAttribute('quote', 'my_attribute', array('type' => 'varchar'));
如果我在空数据库上运行我的magento存储,则运行设置脚本并且“错误的实体ID”错误会破坏该进程.调用堆栈指向我的安装脚本.
…寻找…
如果我去数据库,我看到eav_entity_type表填充但只有8种类型:报价类型没有注册!
这就是Mage_Eav_Model_Entity_Setup-> getEntityTypeId()抛出异常的原因.
问题:
我不知道为什么引用实体不是用其他实体创建的.在模块设置之前,如何强制magento注册报价实体?还有其他选择吗?
解决方法:
从1.4.x主演所有实体都转移到扁平结构.但是仍然可以使用Mage_Sales_Model_MysqL4_Setup类的伪EAV接口.您的代码无效,因为您使用的是Eav设置模型而不是Sales 1.
此外,默认情况下,app / code / local /中的所有模块设置脚本仅在app / code / core中的脚本之后处理,因此您可以选择不指定对核心模块的依赖性.
此致
伊万
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。