我在我的项目中使用Doctrine作为ORM但遇到了一个奇怪的错误:
使用以下YAML:
Album: tableName: dpp_album actAs: [Timestampable] columns: name: string(255) description: string(255) online: boolean
我然后生成我的模型,但刷新我的页面并自动加载模型后,PHP提供此错误:
致命错误:第13行的E:\ sites\dpp\system\application\models\Album.php中找不到"BaseAlbum"类
奇怪的是,我的所有其他模型都很好,在这些情况下可以找到基类.
将名称"相册"更改为"设置"时,它就可以了!这不奇怪吗?!
所以看起来使用'专辑'有点冲突,虽然错误信息暗示了别的东西.更改为复数相册也不起作用,其他任何东西都没问题!
有什么建议?
谢谢!
问题在于模型类的自动加载顺序.
生成的"基础"模型位于"models/generated"目录下,其他位于上面目录中.
加载顺序无法保证,因此有时模型会在其扩展的Base模型之前加载,从而抛出此错误.
在我的bootstrap文件中,我现在明确地包含了目录的加载顺序,如下所示:
Doctrine::loadModels(array(APPPATH.'/models/generated', APPPATH.'/models'));
该文档使用了大量示例生成了生成的文件,但在讨论引导配置时没有提到这种行为.
无论如何,这很快就解决了!:-)