如何在不覆盖已生成的类的情况下将列添加到Database表中? (学说)我需要编辑哪些文件?
如果我只是在数据库中添加该列,我就无法使用Doctrine ORM的set和get函数。
答案 0 :(得分:10)
使用学说迁移。它允许您修改模式,更新数据库和模型,而不会丢失数据库中的现有数据(如果相关)。
http://www.symfony-project.org/doctrine/1_2/en/07-Migrations
也适用于symfony 1.4
答案 1 :(得分:6)
您永远不应该编辑基类(BaseFoo.class.php),因为每次从模式生成模型时都会覆盖这些类。其他文件永远不会被覆盖,因此编辑是安全的。
答案 2 :(得分:4)
转到模型文件夹,打开生成的类,该类反映已添加列的表。添加
$this->hasColumn('id', 'integer', 8, array(
'type' => 'integer',
'autoincrement' => true,
'primary' => true,
'length' => '8',
));
到setTableDefinition
方法。
请注意,您的更改将被generate-models
覆盖,因此请确保将其填充到YAML / DB架构
请参阅Doctrine Models Definition Manual以供参考。
为Annotations Driver
提供的示例,其他Doctrine2 manual和XML驱动程序请参阅YAML
只需在@Entity
类中添加新属性,其中包含@Column
注释:
/** @Column(type="integer", name="new_column") */
protected $new_column;