2

问题:

我正在追踪一个问题,即我的模型上的 getCollection() 没有返回对象,而是在运行以下代码时返回 false:

var_dump(Mage::getResourceModel('referrer/transaction_collection'));

奇怪的是,它在本地返回一个对象,而不是在它正在部署的服务器上。

我试过的:

  • 该代码使用 SVN 部署,在本地和实时是相同的代码。这向我表明这是一个区分大小写的问题(它是在 Mac 上开发的),但是我找不到它。
  • 我已经清除了所有缓存。
  • 该模块已成功安装,我可以在数据库中看到该表。
  • var/log/system.log 中没有任何内容
  • var/report 中没有生成报告
  • 所有权是正确的。
  • 权限没问题。

我已经没有如何调试这个的想法了,我错过了任何 Magento 陷阱吗?

我的代码:

引用者/etc/config.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <TBP_Referrer>
            <version>1.0</version>
        </TBP_Referrer>
    </modules>
    <global>
        <models>
            <referrer>
                <class>TBP_Referrer_Model</class>
                <resourceModel>referrer_mysql4</resourceModel>
            </referrer>
            <referrer_mysql4>
                <class>TBP_Referrer_Model_Mysql4</class>
                <entities>
                    <transaction><table>referrer_transactions</table></transaction>
                </entities>
            </referrer_mysql4>
        </models>
        <resources>
            <referrer_setup>
                <setup>
                    <module>TBP_Referrer</module>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </referrer_setup>
            <referrer_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </referrer_write>
            <referrer_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </referrer_read>
        </resources>
    </global>
</config>

推荐人/模型/Transaction.php

class TBP_Referrer_Model_Transaction extends Mage_Core_Model_Abstract {

    protected function _construct() {
        $this->_init('referrer/transaction');
    }

}

推荐人/模型/mysql4/Transaction.php

class TBP_Referrer_Model_Mysql4_Transaction extends Mage_Core_Model_Mysql4_Abstract {
    protected function _construct() {
        $this->_init('referrer/transaction', 'transaction_id');
    }
}

Referrer/Model/mysql4/Transaction/Collection.php

class TBP_Referrer_Model_Mysql4_Transaction_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract {

    protected function _construct() {
        $this->_init('referrer/transaction');
    }

}

推荐人/sql/referrer_setup/install-1.0.php

$installer = $this;
$installer->startSetup();

$installer->run("
CREATE TABLE referrer_transactions(
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `referrer_id` int(11) DEFAULT NULL,
  `percentage` int(11) DEFAULT '0',
  `order_id` int(11) DEFAULT NULL,
  `amount` decimal(11,2) DEFAULT NULL,
  `timestamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `order_id` (`order_id`),
  KEY `referrer_id` (`referrer_id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
");

$installer->endSetup();
4

2 回答 2

1

花了一段时间才找到它,我使用了错误的抽象类。我正在使用:

Mage_Core_Model_Mysql4_Collection_Abstract

切换到以下解决了它:

Mage_Core_Model_Resource_Db_Collection_Abstract

于 2013-07-28T14:35:50.283 回答
1

在我的情况下,它是 NULL,因为我忘记在 /PROY/Test/Resource/Test/Colection.php 中创建集合模型

<?php
class PROY_Test_Model_Resource_Test_Collection extends     Mage_Core_Model_Resource_Db_Collection_Abstract
 {
     public function _construct()
     {
         parent::_construct();
         $this->_init('test/test');
     }
}
于 2014-05-12T15:24:59.143 回答