Zend framework Zend框架模型关系和访问相关记录
我有一个zend框架模型:Zend framework Zend框架模型关系和访问相关记录,zend-framework,zend-db,zend-db-table,Zend Framework,Zend Db,Zend Db Table,我有一个zend框架模型: class User extends Zend_Db_Table_Abstract { protected $_name = 'users'; protected $_primary = 'id'; protected $_dependentTables = array('UserItem'); public function refresh($) { $items = $this->findDepende
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'
)
);
}
这告诉我,尽管我认为根据Zend文档我做得很好,但我遗漏了一些东西
如果有区别的话,在第一次运行时,项目列表将为空,然后我将“向上插入”一大堆项目-未来运行时,我将比较所有项目,只更新不同的项目。隐马尔可夫模型。。。不,那绝对不相关:)你的课程是混合的。每个实体应该有2个类。。。EntityTable(表网关)和Entity(行网关)。因此,类声明应该如下所示:
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类上,这就是您得到错误的原因。。。您以某种方式扩展了不正确的类
在某种程度上,我的意思是,您的表定义是正确的,但您正在尝试像行一样使用表实例。您可以按照上述建议添加/更改类用法,也可以将user的wor实例作为参数传递到表类以进行刷新:
public function refresh(Zend_Db_Table_Row $user)
{
$items = $user->findDependentRowset('UserItem', 'items');
// do stuff with each item
print_r($items);
die();
}
谢谢它现在起作用了,但让我觉得可能有一种更优雅的方式来做我想做的事情。
public function refresh(Zend_Db_Table_Row $user)
{
$items = $user->findDependentRowset('UserItem', 'items');
// do stuff with each item
print_r($items);
die();
}