Zend Db Table从另一个模块的引用表中获取行

时间:2013-04-14 18:03:11

标签: php mysql zend-framework zend-db-table relationships

我目前正在开发一个基于Zend framework 1.12的项目。我使用不同的模块来尽可能保持分离。我的数据存储在mysql数据库中,因此我在项目中设置了一些db表模型。表之间的关系应由Zend框架Zend_Db_Table Relationships处理。我在课程中添加了必要的代码:

class User_Model_DbTable_Users extends Zend_Db_Table_Abstract
{
    protected $_name = 'users';
    protected $_primary = 'user_id';

    protected $_dependentTables = array('Diagnostics_Model_DbTable_Diagnostics');
}

User_Model_DbTable_Users是父类,在Users模块中定义。 Diagnostics_Model_DbTable_Diagnostics是引用的类,在Diagnostics模块中定义。

class Diagnostics_Model_DbTable_Diagnostics extends Zend_Db_Table_Abstract
{
    protected $_name = 'diagnostics';
    protected $_primary = 'diagnostic_id';

    protected $_referenceMap = array(
        'User' => array(
            'columns'   =>  array('diagnostic_user'),
            'refTableClass' =>  'User_Model_DbTable_Users',
            'refColumns'    =>  array('user_id')
        )
    );
}

当我现在尝试使用

加载用户行的引用诊断时
  

$row->findDiagnostics_Model_DbTable_Diagnostics();

我收到错误:

  

文件“Diagnostics \ Model \ DbTable \ Diagnostics.php”不存在或未在“Diagnostics_Model_DbTable_Diagnostics”类中找到   文件

当我将类Diagnostics_Model_DbTable_Diagnostics移动到Users模块并相应地重命名时,everthing工作正常。所以在我看来好像它与不同模块中定义的类有关。我在研究期间发现的所有文章都没有给我答案。 也许我遗漏了主Bootstrap.phpapplication.ini中的内容。

1 个答案:

答案 0 :(得分:0)

您需要引导模块。好消息:http://akrabat.com/zend-framework/bootstrapping-modules-in-zf-1-8/

我使用如下的简单类:

class Diagnostics_Bootstrap extends Zend_Application_Module_Bootstrap {
     ...
}

请勿引导您不需要的模块,建议您阅读http://www.mwop.net/blog/234-Module-Bootstraps-in-Zend-Framework-Dos-and-Donts.html