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
...
答案 0 :(得分:1)
我明白了。显然,我假设我的mapper类返回的find()
的结果是Zend_Db_Table_Row
对象。我甚至尝试使用instanceOf
来验证这一点,但我使用不当,或者它对我说谎。
我的mapper返回的对象只是一个模型。
在find()
对象上调用Application_Model_DbTable_Table
会返回一个行集,current()
当前正在运行。使用此方法后,我能够成功调用findDependentRowset()
。