2011-01-20 48 views

回答

5

覆蓋在項目的架構文件的那些事:

sfGuardGroup: 
    tableName: groups 

sfGuardPermission: 
    tableName: permissions 

sfGuardGroupPermission: 
    tableName: groups_permissions 

而且,我寧願將其移動到單獨的文件,說sfDoctinePlugin-schema.yml

希望有所幫助。

1

這不是一個好習慣,我會阻止你這樣做。

有了這樣的說法(和粗體,哈哈),你應該能夠將包含的模式複製到您的項目級模式,並將tableName鍵添加到每個記錄定義。我知道以這種方式修改模式一般來說是可行的,因爲我經常使用它來爲sfGuardUser添加額外的列,而不是使用完整的配置文件類......我假定修改表名也可以。

這應該在建立數據庫後,你應該看到你的表名稱。問題是,如果實際插件代碼中存在某個人對錶名進行硬編碼的情況,而不是使用模型中定義的別名,則可能無法正常工作。我不知道有這樣的情況,但在繼續進行這個項目之前,你應該徹底地測試一下。

+0

爲什麼它不被認爲是好的做法?在其實現之後命名錶(可以改變)而不是命名它以反映它實際表示的內容(這不太可能改變)是不是更糟? – 2011-01-20 01:30:18

+0

也許...... IMO ......當使用基於Active Record的ORM時,尤其是使用某種構建系統的ORM,更重要的是該表直接與模型名稱相關聯,以便您知道哪些表屬於哪些模型一目瞭然。在我看來,使表名不可知是在這種情況下更糟的做法,因爲表與模型直接相關。如果您切換模型實現,那麼您很可能將不得不遷移支持它的數據庫模式以及所有相關模型,因此重命名錶格將是我最擔心的問題。 – prodigitalson 2011-01-20 01:46:03

相關問題