编辑:我已经重新阅读了你的问题,我不确定我是否完全掩盖了你的问题。尽管如此,这些信息还是适用的,所以我将把它留在这里。但是,我认为您的问题是关于向现有实体添加属性的最佳实践。特别是在这一点上,使用设置资源为事物添加属性是完全可以接受的,EAV 或其他。Mage_Eav_Model_Entity_Setup::addAttribute()
为此,您可以使用类似的函数,或者Mage_Core_Model_Resource_Setup::run()
根据需要使用 SQL 查询来修改表。
原答案:
可以在同一个模块中使用多个资源,因此这应该足以满足您的要求。
事实上,这很简单,只需定义两个设置资源,Magento 就会同时运行这两个资源。
在您的 config.xml 中:
<config>
...
<global>
...
<resources>
<!-- Resource 1 -->
<mymodule_setup>
<setup>
<module>MyCompany_MyModule</module>
</setup>
<connection>
<use>core_setup</use>
</connection>
</mymodule_setup>
<mymodule_write>
<connection>
<use>core_write</use>
</connection>
</mymodule_write>
<mymodule_read>
<connection>
<use>core_read</use>
</connection>
</mymodule_read>
<!-- Resource 2 -->
<mymodule2_setup>
<setup>
<module>MyCompany_MyModule</module>
</setup>
<connection>
<use>core_setup</use>
</connection>
</mymodule2_setup>
<mymodule2_write>
<connection>
<use>core_write</use>
</connection>
</mymodule2_write>
<mymodule2_read>
<connection>
<use>core_read</use>
</connection>
</mymodule2_read>
</resources>
...
</global>
...
</config>
然后包括必要的安装/升级文件app/code/local/MyCompany/MyModule/sql/mymodule_setup
和app/code/local/MyCompany/MyModule/sql/mymodule2_setup
您甚至可以通过扩展设置模型将自己的功能添加到安装程序中。您可以通过向以下位置添加类标签来做到这一点:
<resources>
<mymodule2_setup>
<setup>
像这样:
<class>MyCompany_MyModule_Entity_Setup</class>
并在app/code/local/MyCompany/MyModule/Entity/Setup.php
看起来像这样:
<?php
class MyCompany_MyModule_Entity_Setup extends Mage_Eav_Model_Entity_Setup
{
}
因此,正如您所怀疑的,您将需要扩展 Mage_Core_Model_Resource_Setup 或 Mage_Eav_Model_Entity_Setup (eav)。