Symfony - добавление столбца в таблицу без потери уже сгенерированных классов - PullRequest
1 голос
/ 22 августа 2011

Как добавить столбец в таблицу базы данных, не перезаписывая уже созданные классы?(Doctrine) Какие файлы мне нужно редактировать?

Если я просто добавлю столбец в базу данных, я не смогу использовать функции set и get Doctrine ORM.

Ответы [ 3 ]

10 голосов
/ 23 августа 2011

Используйте доктрины миграции.Это позволяет вам изменять вашу схему, обновлять базу данных и вашу модель, не теряя при этом существующие данные в вашей базе данных (в случае необходимости).

http://www.symfony -project.org / doctrine /1_2 / ru / 07-Migrations

Применимо для Symfony 1.4 тоже

6 голосов
/ 22 августа 2011

Вы никогда не должны редактировать базовые классы (BaseFoo.class.php), так как они перезаписываются каждый раз, когда вы генерируете модели из схемы.Другие файлы никогда не перезаписываются, поэтому их можно безопасно редактировать.

4 голосов
/ 22 августа 2011

Doctrine 1.2:

Перейдите в папку моделей, откройте сгенерированный класс, который отражает таблицу, в которую вы добавили столбец.Добавьте

$this->hasColumn('id', 'integer', 8, array(
         'type' => 'integer',
         'autoincrement' => true,
         'primary' => true,
         'length' => '8',
         ));

к setTableDefinition методу.

Обратите внимание, что ваши изменения будут перезаписаны на generate-models, поэтому убедитесь, что вы заполнили его схемой YAML / DB

См. Руководство по определению моделей доктрин для справки.

Doctrine 2

Образцы, приведенные для Annotations Driver, см. Руководство Doctrine2 для других XML и YAML драйверы Просто добавьте новое свойство в свой класс @Entity с пометкой @Column:

/** @Column(type="integer", name="new_column") */
protected $new_column;
...