Как генерировать новые модели доктрин без удаления классов моделей доктрин с моим добавлением кода - PullRequest
0 голосов
/ 17 мая 2010

Я создаю приложение Zend с доктриной.

Проблема в том, что когда я добавляю новые таблицы в базу данных и мне нужно создавать модели доктрин, потому что я добавляю свой собственный код в классы, созданные Doctine, я не хочу их удалять. Я решаю эту проблему так:

  1. копировать старые сгенерированные классы моделей доктрин в другую папку
  2. генерирует модели доктрин из базы данных
  3. удалить тот же новый класс моделей доктрин со старым

Я думаю, что моё решение можно улучшить.

Ответы [ 2 ]

3 голосов
/ 17 мая 2010

Только базовые классы перезаписываются, когда они уже существуют.

Не модифицируйте их. Поместите свой пользовательский код в модели, расширяющие базовые классы, чтобы он оставался неизменным при следующем поколении моделей.

Вы также можете взглянуть на сервисный слой , как на метод разделения вашего модельного слоя.

И еще один совет: если вы повторяете одно и то же снова и снова, лучше всего это автоматизировать, например. используя Phing .

0 голосов
/ 19 ноября 2010

вот мое учение CLI, основная идея

   'generateBaseClasses'   => true,
   'generateTableClasses'  => false,

там для доктрины cli воссоздаются только базовые классы, а вы сохраняете свою работу

ура

Тауфек Дагестанский

<?php
echo "Hello Tawfek ! , Howdy ?? \n";
/**
 * Doctrine CLI
 */
error_reporting(E_ALL);
define('ROOT_PATH', realpath(dirname(__FILE__)));
define('APPLICATION_PATH', realpath(dirname(__FILE__) . "/../"));
define('APPLICATION_ENV', 'development');
//Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    '../library',get_include_path(), "/home/------/Sites/font/library/" )));
/** Zend_Application */
require_once 'Zend/Application.php';

// Create application, bootstrap, and run
$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/application.ini'
);

// Read in the application.ini bootstrap for Doctrine
$application->getBootstrap()->bootstrap('doctrine');

// Create the configuration array
$config = $application->getOption('doctrine');
// (Note you can have all of these in application.ini aswell)
$config['generate_models_options'] = array(
    // Define the PHPDoc Block in the generated classes
    'phpDocPackage'         =>'Font',
    'phpDocSubpackage'      =>'Models',
    'phpDocName'            =>'Tawfek Daghistani',
    'phpDocEmail'           =>'-----@-----.com',
    'phpDocVersion'         =>'1.0',
    // Define whats what and named how, where.
    'suffix'                => '.php',
    'pearStyle'             => true,
    'baseClassPrefix'       => 'Base_',
    // Unless you have created a custom class or want Default_Model_Base_Abstract
    'baseClassName'         => 'Doctrine_Record',
    // Leave this empty as specifying 'Base' will create Base/Base
    'baseClassesDirectory'  => NULL,
    // Should make it Zend Framework friendly AFAIK
    'classPrefix'           => 'Dagho_Model_',
    'classPrefixFiles'      => false,
    'generateBaseClasses'   => true,
    'generateTableClasses'  => false,
    'packagesPath'          => APPLICATION_PATH . '/models',
    'packagesFolderName'    => 'packages',

);

$cli = new Doctrine_Cli($config);
$cli->run($_SERVER['argv']);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...