起源...
我有一个带有设置脚本的模块(常见的 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 接口(interface)。您的代码不起作用,因为您使用的是 Eav 设置模型而不是销售模型。
此外,默认情况下,app/code/local/中的所有模块设置脚本仅在 app/code/core 中的脚本之后处理,因此您可以选择不指定对核心模块的依赖。
真诚的, 伊万
关于php - 安装时没有引号的 eav_entity_type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10228992/