2012-09-20 27 views
24

Quiero añadir una columna en la séptima posición de la tabla, estoy usandoaddColumn posición de migración yü

$this->addColumn('table_name','column_name','type'); 

agrega la columna al final. ¿Hay alguna forma en la que pueda mencionar el lugar para agregar la columna? O cualquier palabra clave posterior a la columna para agregar mi nueva columna después, para exapmle, columna de contraseña. He aprendido sobre migración de Yii Doc

Respuesta

40

Esto debería funcionar!

$this->addColumn('table_name', 'column_name', 'type AFTER column6'); 

ejemplos:

$this->addColumn('tbl_posts', 'email', 'VARCHAR(150) AFTER `name` '); 
$this->addColumn('tbl_posts', 'phone', 'string AFTER `email` '); 
+1

Gracias! Sí :) No pude encontrar la manera de hacerlo en el documento, ¿hay algo más que recomiendas para Yii? y solo una última pregunta, cuando el nombre de la clase de migración parece ser m120920_041119_update_users_about puedo agregar $ this-> addColumn ('users', 'about_ME', 'string AFTER password'); El _ME tiene que estar en el nombre de la clase? –

+0

Funciona, pero funciona engañando; cuando Yii compone el SQL, simplemente 'copia y pasa' el valor de 'tipo' en sql, y, casualmente, la sintaxis 'tipo DESPUÉS de una columna' genera un SQL válido. Por supuesto, me complace usarlo a partir de ahora, y gracias por mostrarnos este método. – realtebo

+2

Muchas cosas se hacen "engañando" en el mundo Yii (y PHP (y programación (y vida))). –

15
$this->addColumn('{{%user}}', 'username', 
      $this->string()->notNull()->unique()->after('id') 
      ); 
+3

Esto funciona bien y es elegante. ¡Gracias! –

+1

ESTE es * el camino * debería ser. – christian

Cuestiones relacionadas