当我使用Doctrine从Yaml/db生成类时,每个Base类(包括表定义)都扩展了Doctrine_Record类.
由于我的应用程序使用一个主站和(多)从数据库服务器我需要能够使基类继承我的自定义记录类强制写入到主数据库服务器(如描述在这里).但是,如果我手动更改基类,当我使用Doctrine从Yaml/db重新生成类时,我会再次丢失它.
我需要找到一种方法来告诉Doctrine扩展我自己的Base类,或者找到一个使用Doctrine的主/从数据库设置的不同解决方案.
示例生成的模型:
abstract class My_Base_User extends Doctrine_Record
{
Run Code Online (Sandbox Code Playgroud)
但是我需要它自动生成为:
abstract class My_Base_User extends My_Record
{
Run Code Online (Sandbox Code Playgroud)
我在一个新的Zend Framework 1.9.6应用程序中使用Doctrine 1.2.1,如果它有任何区别的话.
Sha*_*ady 10
典型的,一旦我问这个问题,我设法找到答案.我在这里录音,以防其他人有同样的问题.
您可以将参数'baseClassName'传递给generateModels*方法,Doctrine将使用它作为Base记录类.
例子:
Doctrine_Core::generateModelsFromDb('models', array('master'), array('generateTableClasses' => true, 'baseClassName' => 'My_Record'));
Run Code Online (Sandbox Code Playgroud)
或使用Cli:
$options['generate_models_options'] = array(
'pearStyle' => true,
'baseClassPrefix' => 'My_',
'baseClassName' => 'My_Record',
'classPrefix' => '',
'classPrefixFiles' => false,
'generateTableClasses' => true,
);
$cli = new Doctrine_Cli($options);
Run Code Online (Sandbox Code Playgroud)