編輯:我已經重新讀過你的問題,我不確定我是否完全覆蓋了你所要求的。儘管如此,這些信息適用於某些情況,所以我將在此處留下。不過,我認爲你的問題是關於向現有實體添加屬性的最佳做法。特別是在這一點上,使用設置資源爲事物添加屬性,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)。
這讓我多次陷入困境。始終確保您正在使用正確的資源模型來添加您要添加的實體類型! – 2014-08-13 01:24:12