2009-12-10 58 views
5

當我使用Doctrine從Yaml/db生成類時,每個Base類(包括表定義)擴展了Doctrine_Record類。因爲我的應用程序使用一個主服務器和(多個)從服務器數據庫服務器,我需要能夠使基類擴展我的自定義記錄類以強制寫入主服務器數據庫(如描述here)。 但是,如果我手動更改基類,當我使用Doctrine從Yaml/db重新生成類時,會再次丟失它。如何生成擴展定製記錄類的Doctrine模型/類

我需要找到一種告訴Doctrine擴展我自己的Base類的方法,或者找到使用Doctrine的主/從數據庫設置的不同解決方案。

例生成的模型:

abstract class My_Base_User extends Doctrine_Record 
{ 

但是我需要它作爲自動生成:

abstract class My_Base_User extends My_Record 
{ 

我使用的原則1.2.1如果一個新的Zend Framework 1.9.6應用有什麼區別。

+2

相關搞清楚了這一點::現在我可以簡單地修改INI添加baseClassName像這樣,如果你正在嘗試做這在Symfony的項目,請參閱http://stackoverflow.com/questions/4392713/cant-change-model-builder-options – 2011-08-29 02:17:17

回答

10

典型的,只要我問這個問題,我設法找到答案。我在這裏錄音,以防其他人遇到同樣的問題。

您可以將參數'baseClassName'傳遞給generateModels *方法,Doctrine將使用它作爲Base記錄類。

例子:

Doctrine_Core::generateModelsFromDb('models', array('master'), array('generateTableClasses' => true, 'baseClassName' => 'My_Record')); 

或使用CLI:

$options['generate_models_options'] = array(
'pearStyle'    => true, 
'baseClassPrefix'  => 'My_', 
'baseClassName'   => 'My_Record', 
'classPrefix'   => '', 
'classPrefixFiles'  => false, 
'generateTableClasses' => true, 
); 

$cli = new Doctrine_Cli($options); 
1

完美,謝謝!這很酷,因爲我從類似版本(1.9.x)的Zend Framework項目中的application.ini中獲取原則選項。再次

doctrine.generate_models_options.baseClassName = "BaseRecord" 

謝謝你救了我的時間我自己:)