Doctrine迁移。在另一个列后添加列。

6
$table = $schema->getTable('agent_documents');
$table->addColumn('name_r', 'string');

如何将该字段添加到另一个字段之后,而不是作为最后一个字段?
1个回答

8

Doctrine2不支持在除结尾以外的其他位置添加列。如果您使用ORM,您不应该关心列的顺序。但是,您可以尝试运行SQL查询(例如MySQL),如下所示:

$this->addSql('ALTER TABLE agent_documents ADD name_r VARCHAR(255) NOT NULL AFTER desired_column_name');

2
实际上,列的顺序很重要。如果您有一个经常更改的 varchar,则应始终将其放在最后。否则,更改 varchar 的内容可能会导致整行重写。 - DAB
@DAB 你说的这个有没有相关文档可以参考?我问这个是因为我想弄清楚为什么会这样。 - Amin
1
@Amin - 在这里查看答案:https://dev59.com/Um025IYBdhLWcg3wOzM9 - DAB
Doctrine在创建表时遵循定义的列顺序,对吧?所以它不会忽略它,是吗?或者它最初会以随机顺序添加列,这样你的id列就在中间某个位置,其余的则是随机的?如果它最初要遵循一个顺序,为什么不总是遵循那个定义好的顺序呢?这毫无意义。 - SteveExdia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接