Zend framework 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

我有一个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'
        )
    );
}
这告诉我,尽管我认为根据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();
}