将新列添加到现有Doctrine模型

时间:2011-05-09 06:41:17

标签: codeigniter doctrine new-operator add

首先,StackOverflow的帽子为他们的优质服务和你们花时间回答我们的问题。

我正在使用Doctrine ORM 1.2.4和CodeIgniter 1.7.3。我创建了一个包含一些必需表格的站点,并且仅使用数据来实现特定表格需要再增加一列的时间点。

我创建表的方法是将模型编写为扩展Doctrine_Record的php类。

现在我想知道我是否需要在模型中添加需要setTableDefinition()方法中的新列的列并重新创建该表,或者是否有其他方法可以轻松地执行此操作。我提到的前一种方法要求我将当前表与数据一起删除并重新创建我不希望的表。由于学说似乎是一个非常好的架构师编辑的数据库框架,我相信它缺乏我的知识,但肯定应该存在一种方便地添加新列。

PS:我不是试图改变与其他表有关系的列,而只是添加一个与任何其他表无关的新列。我也使用Doctrine :: createTablesFromModels()创建数据库中的表;当我使用新列更改表并运行此方法时,它会显示错误。

1 个答案:

答案 0 :(得分:0)

因为你不想放弃&重新创建,使用Doctrine Migration。

这里的官方文档显示了很多例子:

http://www.doctrine-project.org/projects/orm/1.2/docs/manual/migrations/en

由于您只想添加一个字段,请将其第二个代码示例视为最相关的,如下所示:

// migrations/2_add_column.php

class AddColumn extends Doctrine_Migration_Base
{
    public function up()
    {
        $this->addColumn('migration_test', 'field2', 'string');
    }

    public function down()
    {
        $this->removeColumn('migration_test', 'field2');
    }
}