繁体   English   中英

Zend_DB_Table_Abstract中的关系

[英]Relationships in Zend_DB_Table_Abstract

我使用的是使用Zend Framework Application工具创建的默认框架代码,我添加了一些自动加载器魔术,以便任何名为Default_<*>_<*>都可以从正确的目录(在本例中为Default_Model_TableName自动加载。

应用程序/模型/ProjectCategories.php:

<?php

class Default_Model_ProjectCategories extends Zend_Db_Table_Abstract {
    protected $_name = 'categories';
    protected $_dependentTables = array('Projects');
}

application / models / Projects.php:

<?php

class Default_Model_Projects extends Zend_Db_Table_Abstract {
    protected $_name = 'projects';

    protected $_referenceMap    = array(
        'Category' => array(
            'columns'           => 'cid',
            'refTableClass'     => 'ProjectCategories',
            'refColumns'        => 'id',
            'onUpdate'          => self::CASCADE,
            'onDelete'          => self::CASCADE,
        )
    );

}

我正在尝试做以下事情:

<?php
$categories = new Default_Model_ProjectCategories();
$category = $categories->find('1');
$category->findProjects();

此时,我遇到一个错误,即它找不到Projects.php,或者该文件可能未包含名为Projects的类。

那时,我将Projects.php放置在框架(/../library/)设置的包含路径中,并且找到了文件,但是现在我失去了整个目录结构,并命名,因为我必须重命名Default_Model_ProjectsProjects 如果将文件放回原来的位置并进行更改,则可以使一切正常工作

protected $_dependentTables = array('Projects');

protected $_dependentTables = array('Default_Model_Projects');

但这也意味着我的->findProjects()现在变为->findDefault_Model_Projects()

有没有办法告诉我,当我寻找findProjects()时必须实例化Default_Model_Projects 这是Zend Framework缺少的东西,还是我试图以某种不属于自己的方式来拔毛刺? 您如何解决这个问题?

新的Autoloader可能已经引入了此问题,并且它更喜欢加载命名空间的类(例如,带有前缀的类)。

在我的应用程序中,我只是简单地命名诸如“ Projects”之类的模型,并在该应用程序的包含路径中添加一个单独的models文件夹。 这是一个解决方案-不幸的是,我不知道如何使命名空间模型正确加载,但是我建议更详细地研究Zend_Loader,以及pluginLoaders。

我曾经能够做类似的事情

$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
    'basePath'  => APPLICATION_PATH,
    'namespace' => 'App',
));
$resourceLoader->addResourceType('model', 'models/', '');

缩小我的模型类到App_TableName,但似乎它现在不起作用...

更改

protected $_dependentTables = array('Projects');

protected $_dependentTables = array('Default_Model_Projects');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM