我有一个zend框架模型:
class User extends Zend_Db_Table_Abstract {
protected $_name = 'users';
protected $_primary = 'id';
protected $_dependentTables = array('UserItem');
public function refresh($) {
$items = $this->findDependentRowset('UserItem', 'items');
// do stuff with each item
print_r($items);
die();
}
}
我也有相关的模型:
<?php
class UserItem extends Zend_Db_Table_Abstract
{
protected $_name = 'user_items';
protected $_referenceMap = array(
'items' => array(
// user_id is the name of the field on the USER_ITEMS table
'columns' => 'user_id',
'refTableClass' => 'User',
// id is the name of the field on the USERS table
'refColumns' => 'id'
)
);
}
&GT;
我希望我能够打电话给User->refresh();
,并且会发生一些奇特的事情。但错误是
Fatal error: Call to undefined method FbUser::findDependentRowset()
这告诉我,虽然我认为我根据Zend文档正确地做了http://framework.zend.com/manual/en/zend.db.table.relationships.html但我错过了一些东西。
如果它有所不同,首先运行项目列表将为空,然后我将“Upsert”一大堆项目 - 未来运行我将比较所有项目只更新不同的项目。嗯......这绝对不相关:)
答案 0 :(得分:2)
你的课程是混合的。每个实体应该有2个类...一个EntityTable(您的表网关)和一个实体(您的行网关)。所以类声明应该类似于:
class User extends Zend_Db_Table_Row
class FbUser extends User
class UserTable extends Zend_Db_Table_Abstract
class UserItem extends Zend_Db_Table_Row
class UserItemTable extends Zend_Db_Table_Abstract
行类是您的模型(或根据您希望如何连接它来链接到模型),而不是表类。
findDependentRowset
方法在Zend_Db_Table_Row类上,这就是你收到错误的原因......你已经在某种程度上扩展了错误的类。
在某种程度上,我的意思是你的表定义是正确的,但你正在尝试使用像行一样的表实例。您可以按照上面的建议添加/更改类使用,也可以将用户的wor实例作为要刷新的参数传递给表类:
public function refresh(Zend_Db_Table_Row $user)
{
$items = $user->findDependentRowset('UserItem', 'items');
// do stuff with each item
print_r($items);
die();
}