2009-12-06 30 views
0

我使用學說的ORM在我的項目,但對一個奇怪的錯誤跑:爲什麼我不能創建一個名爲主義模式「相冊」

使用以下YAML:

Album: 
    tableName: dpp_album 
    actAs: [Timestampable] 
    columns: 
    name: string(255) 
    description: string(255) 
    online: boolean 

然後我產生我的模型,但在刷新我的網頁,並自動加載模型,PHP提供此錯誤:

Fatal error: Class 'BaseAlbum' not found in E:\sites\dpp\system\application\models\Album.php on line 13

奇怪的是我所有的其他機型也蠻好和基類是在這些案件中發現的。

將名稱'相冊'更改爲'設置'之類的東西時,它正常工作!這不奇怪嗎?!

所以它似乎使用'相冊'以某種方式衝突,雖然錯誤信息表明別的東西。更改爲複數音樂專輯也行不通,其他任何事情都很好!

有什麼建議嗎?

謝謝!

+0

我猜想'專輯'是該ORM的保留關鍵字,根據您的描述。也許有一種方法使用分隔符來繞過這個... – 2009-12-06 19:36:20

+0

我也這麼認爲,儘管如此,一個奇怪的!但是,當搜索文檔和源代碼時,我找不到任何名爲「相冊」... :-( – 2009-12-06 20:05:56

+0

http://www.google.com/codesearch?q=lang%3Aphp+doctrine+Album&hl=zh-CN&btnG=Search+Code谷歌代碼也可以找到相冊類的使用 – Cups 2009-12-06 21:29:16

回答

2

如果選項generateBaseClasses設置(默認)generateModelsFromYaml()將你的情況(在子目錄generated默認)和一個空類Album extends AlbumBase創建一個類AlbumBase。即如果Album已實例化,則AlbumBase必須已被某些自動裝載器識別或加載。

+0

idd,我只是想通了! – 2009-12-06 22:23:49

5

問題在於模型類的自動加載順序。

生成的'Base'模型位於'models/generated'目錄下,其他目錄位於上述目錄下。

加載順序不能保證,所以有時候模型會在它擴展的Base模型之前被加載,從而引發這個錯誤。

在我的引導文件,我現在已經明確列入目錄的加載順序如下:

Doctrine::loadModels(array(APPPATH.'/models/generated', APPPATH.'/models')); 

的文檔使用了大量的導致生成的文件的例子,但在談論時沒有提及這一行爲引導配置。

無論如何,快樂這是固定的! :-)

相關問題