私がこのテーブル構造を持っているとしましょう:
+----+------------+-----------+---------+------+---------+---------+---------------------+---------------------+
| 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 |
+----+------------+-----------+---------+------+---------+---------+---------------------+---------------------+
そして、email
のid
の直後とfirst_name
の前に、addColumn
methodMigration
クラス。
新しい移行でできることは次のとおりです。
public function up()
{
$this->addColumn('contacts', 'email', $this->string(64));
}
そして、それをupdated
フィールドの後のテーブルの最後に置きます。
テーブル内の特定の位置に列を追加して、このSQLクエリを尊重するにはどうすればよいですか。
ALTER TABLE contacts ADD email VARCHAR(64) AFTER id
解決しました。誰かが同じ問題に直面している場合、これは私が使用した解決策です:
public function up()
{
$this->addColumn('contacts', 'email', 'VARCHAR(64) AFTER id');
}
EDIT:バージョンから Yii 2.0.8 この連鎖構文も使用できます:
$this->addColumn('contacts', 'email', $this->string(64)->after('id'));
public function up()
{
$this->addColumn('contacts', 'email', $this->string(64)->after('id'));
}
以下のように、そのための移行コマンドを使用できます。
php yii migrate/create add_email_column_to_contacts_table --fields="email:string(64):after('id')"