Php 如何获取magento表名

Php 如何获取magento表名,php,sql,magento,module,installation,Php,Sql,Magento,Module,Installation,我有一个全局配置: <global> <models> <subscriber> <class>Giftlab_Subscriber_Model</class> <resourceModel>subscriber_resource</resourceModel> </subscriber> <subscriber_resource&

我有一个全局配置:

<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>

但这只会产生一个异常
无法检索实体config:subscriber\u resource/records
。检索表名需要做什么?

在使用
集合的Magento上。请参见示例:

$mysubscriber_recordsCollection = Mage::getModel('records/subscriber_records')->getCollection()
检查有用的Alan Storm站点,特别是

编辑

要在安装程序中获取表名,请参阅下面的详细示例。请注意
$installer->getTable('records/subscriber_records')
这里是加载表名的地方

<?php
    echo 'Running This Upgrade: '.get_class($this)."\n <br /> \n";
    $installer = $this;
    $installer->startSetup();
    $installer->run("
        CREATE TABLE `{$installer->getTable('records/subscriber_records')}` (
            `subscriber_records_id` int NOT NULL AUTO_INCREMENT,
            PRIMARY KEY (`subscriber_records_id`)
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    ");
    $installer->endSetup();

我自己找到了答案,不过感谢@Yaroslav指导我阅读艾伦·斯托姆的教程,因为这很有帮助

答案是,我需要这个:

$this->getTable('subscriber/records');
其中“subscriber”是模型(而不是资源)的配置项的名称,“records”是实体。事实证明,当magento解析thinga/thingb时,它总是假设斜杠前的thinga是模型,并通过在配置中查找
{resourcemodel}
,然后再次查找
来获取表名,从而取消对该模型的引用以获取资源


所以我的配置是正确的,我只是混淆了模型和资源的概念。希望这能帮助其他人解决同样的问题-我在各种教程中找不到任何关于这一点的明确信息。

如果您想获得一个资源的表名,而该资源没有资源模型(如
目录/category\u产品
),并且您在安装脚本中没有的话,您可以这样做:

$table = Mage::getSingleton('core/resource')->getTableName('catalog/category_product');

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

老实说,我一直知道表名,$This->getTable('some/thing')只添加了前缀和后缀。因此,实际上如果你对它工作的表名进行评估是的,但这太高了-我说我正在尝试在安装sql中获取表名,这实际上是我将创建表的地方,所以我还不能使用getModel。哎哟!你说得对。编辑并添加了您要查找的内容。保留其他代码作为奖励;)
$table = Mage::getSingleton('core/resource')->getTableName('catalog/category_product');