2016-02-13 11 views
9

Diciamo che ho questo la struttura della tabella:Come aggiungere una nuova colonna con migrazioni Yii 2 su una posizione specifica in una tabella?

+----+------------+-----------+---------+------+---------+---------+---------------------+---------------------+ 
| 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 | 
+----+------------+-----------+---------+------+---------+---------+---------------------+---------------------+ 

e voglio aggiungere una nuova colonna denominata email, subito dopo id e prima first_name, utilizzando il addColumnmethod della classe Migration.

unica cosa che posso fare nella mia nuova migrazione è:

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

E sarà messo alla fine del tavolo, dopo updated campo.

Come posso aggiungere una colonna in una posizione specifica all'interno del mio tavolo, in modo da questa query SQL potrebbe essere rispettato:

ALTER TABLE contacts ADD email VARCHAR(64) AFTER id 

risposta

17

risolto. Se qualcuno si trova di fronte lo stesso problema, questa è la soluzione che ho usato:

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

EDIT: Dalla versione Yii 2.0.8 è possibile utilizzare questa sintassi Chained così:

$this->addColumn('contacts', 'email', $this->string(64)->after('id')); 
7
public function up() 
{ 
    $this->addColumn('contacts', 'email', $this->string(64)->after('id')); 
} 
+3

Cerca di evitare di scaricare semplicemente un codice come risposta e provare a spiegare cosa fa e perché - in questo modo sarà più facile per un utente più recente imparare dalla tua risposta. – Frits

+2

Inoltre, nota da quale versione è disponibile il metodo 'after'. (Dalla versione 2.0.8: http://www.yiiframework.com/news/97/yii-2-0-8-is-released/) – omerowitz

2

È possibile utilizzare il comando di migrazione per quello che segue:

php yii migrate/create add_email_column_to_contacts_table --fields="email:string(64):after('id')" 
Problemi correlati