Ben*_*ird 5 php sql install module magento
我有这个全局配置:
<global>
<models>
<subscriber>
<class>Giftlab_Subscriber_Model</class>
<resourceModel>subscriber_resource</resourceModel>
</subscriber>
<subscriber_resource>
<class>Giftlab_Subscriber_Model_Resource</class>
<entities>
<records>
<table>subscriber_records</table>
</records>
</entities>
</subscriber_resource>
</models>
<resources>
<giftlab_subscriber_write>
<connection>
<use>core_write</use>
</connection>
</giftlab_subscriber_write>
<giftlab_subscriber_read>
<connection>
<use>core_read</use>
</connection>
</giftlab_subscriber_read>
<giftlab_subscriber_setup>
<setup>
<module>Giftlab_Subscriber</module>
<class>Giftlab_Subscriber_Model_Resource_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</giftlab_subscriber_setup>
</resources>
</global>
Run Code Online (Sandbox Code Playgroud)
在我的mysql4-install-0.1.0.php文件中,我需要获取表名.我该怎么做?我知道它是这样的:
$this->getTable('subscriber_resource/records')
Run Code Online (Sandbox Code Playgroud)
但这只会产生异常Can't retrieve entity config: subscriber_resource/records.我需要做什么来检索表名?
Ben*_*ird 16
我自己想出了答案,尽管感谢@Yaroslav指导我参加Alan Storm的教程,因为这有助于.
答案是,我需要这个:
$this->getTable('subscriber/records');
Run Code Online (Sandbox Code Playgroud)
其中"subscriber"是模型(不是资源)的配置条目的名称,"records"是实体.事实证明,当magento解析thinga/thingb时,它总是假设斜杠之前的东西是模型并通过查看配置来取消获取资源,<thinga><resourceModel>{resourcemodel}然后再次查找<{resourcemodel}><entities><thingb><table>获取表名.
所以我的配置是正确的,我只是在模型和资源的想法之间混淆.希望这有助于其他人陷入同样的问题 - 我在各种教程中找不到任何明确的信息.
如果您想获取没有资源模型的资源的表名称(例如catalog/category_product)并且您不在设置脚本中,您可以这样做:
$table = Mage::getSingleton('core/resource')->getTableName('catalog/category_product');
Run Code Online (Sandbox Code Playgroud)
这对于通常不需要模型类的所有 N:M 关系很有帮助。