在使用findDependantRowset和Zend Framework时,为什么会出现这个奇怪的错误?

时间:2011-05-25 01:04:45

标签: php zend-framework zend-db

PHP正在抛出此错误:

Fatal error: Call to a member function getAdapter() on a non-object in C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Db\Table\Row\Abstract.php on line 869

...当我调用此代码时:

$item = $itemMapper->find(1); // Find item with id of 1     
$item->findDependentRowset("Application_Model_DbTable_SubItem");

我有以下其他课程:

models/DBTable/Item.php

class Application_Model_DbTable_Item extends Zend_Db_Table_Abstract {
    /** Table name */
    protected $_name = 'items';
}

models/DBTable/SubItem.php

class Application_Model_DbTable_SubItem extends Zend_Db_Table_Abstract {

    /** Table name */
    protected $_name = 'subitems';
    protected $_referenceMap = array(
        'Item' => array(
            'columns' => 'items_id',
            'refTableClass' => 'Application_Model_DbTable_Item',
            'refColumns' => 'items_id'
        )
    );

}

据我所知,我的所有模型,映射器和数据库表都已正确设置。通过包装器和fetchAll访问模型工作正常。

我的模型扩展Zend_Db_Table_Row。为什么它会给我这个错误?

供参考:

错误消息引用的行如下所示:

public function findDependentRowset($dependentTable, $ruleKey = null, Zend_Db_Table_Select $select = null){

    $db = $this->_getTable()->getAdapter(); // <<<< there it is
...

1 个答案:

答案 0 :(得分:1)

我明白了。显然,我假设我的mapper类返回的find()的结果是Zend_Db_Table_Row对象。我甚至尝试使用instanceOf来验证这一点,但我使用不当,或者它对我说谎。

我的mapper返回的对象只是一个模型。

find()对象上调用Application_Model_DbTable_Table会返回一个行集,current()当前正在运行。使用此方法后,我能够成功调用findDependentRowset()