如何获取magento表名

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>获取表名.

所以我的配置是正确的,我只是在模型和资源的想法之间混淆.希望这有助于其他人陷入同样的​​问题 - 我在各种教程中找不到任何明确的信息.


nai*_*rch 5

如果您想获取没有资源模型的资源的表名称(例如catalog/category_product)并且您不在设置脚本中,您可以这样做:

$table = Mage::getSingleton('core/resource')->getTableName('catalog/category_product');
Run Code Online (Sandbox Code Playgroud)

这对于通常不需要模型类的所有 N:M 关系很有帮助。