原点......
我有一个带有安装脚本的模块(常见的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注册报价实体?还有其他选择吗?
答案 0 :(得分:6)
从1.4.x主演所有实体都转移到扁平结构。但是仍然可以使用Mage_Sales_Model_Mysql4_Setup类的伪EAV接口。您的代码无效,因为您使用的是Eav设置模型而不是Sales 1。
此外,默认情况下,app / code / local /中的所有模块设置脚本仅在app / code / core中的脚本之后处理,因此您可以选择不指定对核心模块的依赖。
此致 伊万