[英]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_Projects
到Projects
。 如果将文件放回原来的位置并进行更改,则可以使一切正常工作
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.