【问题标题】:How to generate Doctrine models/classes that extend a custom record class如何生成扩展自定义记录类的 Doctrine 模型/类
【发布时间】:2009-12-10 13:04:57
【问题描述】:

当我使用 Doctrine 从 Yaml/db 生成类时,每个 Base 类(包括表定义)都扩展了 Doctrine_Record 类。

由于我的应用程序使用一个主数据库服务器和(多个)从属数据库服务器,我需要能够使基类扩展我的自定义记录类以强制写入到主数据库服务器(如 here 所述)。 但是,如果我手动更改基类,当我使用 Doctrine 从 Yaml/db 重新生成我的类时,我会再次丢失它。

我需要找到一种方法来告诉 Doctrine 扩展我自己的 Base 类,或者找到使用 Doctrine 设置主/从数据库的不同解决方案。

示例生成模型:

abstract class My_Base_User extends Doctrine_Record
{

但是我需要它自动生成为:

abstract class My_Base_User extends My_Record
{

如果有任何不同,我将在新的 Zend Framework 1.9.6 应用程序中使用 Doctrine 1.2.1。

【问题讨论】:

标签: php orm doctrine


【解决方案1】:

典型的,只要我提出问题,我就会设法找到答案。我在这里记录一下,以防其他人有同样的问题。

您可以将参数“baseClassName”传递给 generateModels* 方法,Doctrine 将使用它作为基本记录类。

例子:

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);

【讨论】:

    【解决方案2】:

    完美,谢谢!这很酷,因为我在类似版本 (1.9.x) 的 Zend Framework 项目中从我的 application.ini 中获取了学说选项。现在我可以简单地修改 ini 以添加 baseClassName,如下所示:

    doctrine.generate_models_options.baseClassName = "BaseRecord"
    

    再次感谢您节省了我自己解决这个问题的时间:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      • 2020-10-30
      • 1970-01-01
      • 2023-03-21
      相关资源
      最近更新 更多