如何在表中的特定位置添加一个新列,其中包含 Yii 2 迁移?

2022-08-31 00:07:14

假设我有这个表结构:

+----+------------+-----------+---------+------+---------+---------+---------------------+---------------------+
| id | first_name | last_name | country | city | address | zipcode | created             | updated             |
+----+------------+-----------+---------+------+---------+---------+---------------------+---------------------+
|  1 | Duvdevan   | Duvdevani | NULL    | NULL | NULL    | NULL    | 2016-02-12 15:37:19 | 2016-02-12 16:35:57 |
+----+------------+-----------+---------+------+---------+---------+---------------------+---------------------+

我想添加一个名为 的新列,就在之后和之前,使用类的方法emailidfirst_nameaddColumnMigration

在新迁移中,我唯一能做的就是:

public function up()
{
    $this->addColumn('contacts', 'email', $this->string(64));
}

它会把它放在桌子的末尾,在田野之后。updated

如何在表中的特定位置添加列,以便可以遵循此SQL查询:

ALTER TABLE contacts ADD email VARCHAR(64) AFTER id

答案 1

解决了它。如果有人遇到同样的问题,这是我使用的解决方案:

public function up()
{
    $this->addColumn('contacts', 'email', 'VARCHAR(64) AFTER id');
}

编辑:Yii 2.0.8 版本开始,您也可以使用这个链接语法:

$this->addColumn('contacts', 'email', $this->string(64)->after('id'));

答案 2
public function up()
{
    $this->addColumn('contacts', 'email', $this->string(64)->after('id'));
}

推荐