Как генерировать модели/классы Doctrine, которые расширяют пользовательский рекордный класс

То, когда я использую Доктрину для генерации классов от Yaml/db каждый Базовый класс (который включает определение таблицы), расширяет класс Doctrine_Record.

Так как мое приложение использует ведущее устройство и (несколько) ведомые серверы дб, я должен смочь заставить Базовые классы расширить мой пользовательский рекордный класс, чтобы вынудить записи перейти к основному серверу дб (как описано сюда). Однако, если я изменяю базовый класс вручную, я теряю его снова, когда я повторно создаю свои классы от Yaml/db использование Доктрины.

Я должен найти способ сказать Доктрине расширять мой собственный Базовый класс или находить другое решение основной/ведомой установки дб с помощью Доктрины.

Пример сгенерированная модель:

abstract class My_Base_User extends Doctrine_Record
{

Однако мне нужен он, чтобы быть автоматически сгенерированным как:

abstract class My_Base_User extends My_Record
{

Я использую Доктрину 1.2.1 в новой Платформе Зенда 1.9.6 приложений, если это имеет какое-либо значение.

5
задан Shane O'Grady 10 December 2009 в 13:04
поделиться

2 ответа

Обычно, как только я задаю вопрос, мне удается найти ответ. Я записываю его здесь на тот случай, если у кого-то еще возникнет такая же проблема.

Вы можете передать параметр '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);
10
ответ дан 13 December 2019 в 19:28
поделиться

Отлично, спасибо! Это круто, потому что я беру параметры доктрины из моего application.ini в моем проекте Zend Framework аналогичной версии (1.9.x). Теперь я могу просто изменить ini, добавив baseClassName следующим образом:

doctrine.generate_models_options.baseClassName = "BaseRecord"

Еще раз спасибо за то, что сэкономил мне время, чтобы разобраться в этом самостоятельно :)

1
ответ дан 13 December 2019 в 19:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: