Symfony - 向表中添加一列而不会丢失已生成的类

时间:2011-08-22 11:24:07

标签: symfony1 doctrine symfony-1.4 doctrine-1.2

如何在不覆盖已生成的类的情况下将列添加到Database表中? (学说)我需要编辑哪些文件?

如果我只是在数据库中添加该列,我就无法使用Doctrine ORM的set和get函数。

3 个答案:

答案 0 :(得分:10)

使用学说迁移。它允许您修改模式,更新数据库和模型,而不会丢失数据库中的现有数据(如果相关)。

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

也适用于symfony 1.4

答案 1 :(得分:6)

您永远不应该编辑基类(BaseFoo.class.php),因为每次从模式生成模型时都会覆盖这些类。其他文件永远不会被覆盖,因此编辑是安全的。

答案 2 :(得分:4)

学说1.2:

转到模型文件夹,打开生成的类,该类反映已添加列的表。添加

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

setTableDefinition方法。

请注意,您的更改将被generate-models覆盖,因此请确保将其填充到YAML / DB架构

请参阅Doctrine Models Definition Manual以供参考。

主义2

Annotations Driver提供的示例,其他Doctrine2 manualXML驱动程序请参阅YAML 只需在@Entity类中添加新属性,其中包含@Column注释:

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