2012-09-20 11 views
24

ich eine Spalte am siebten Platz in der Tabelle hinzugefügt werden soll, ist miraddColumn yii Migrationsposition

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

fügt die Spalte am Ende verwendet wird. Gibt es eine Möglichkeit, wo ich den Platz zum Hinzufügen der Spalte erwähnen kann? Oder jedes nach dem Spaltenschlüsselwort, um meine neue Spalte nach zB password column hinzuzufügen. Ich habe gelernt über Migration von Yii Doc

Antwort

40

Dies sollte funktionieren!

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

Beispiele:

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

Dank! Es tat :) Ich konnte nicht den Weg finden, es im Doc zu tun, gibt es noch etwas, das Sie für Yii beziehen. und nur eine letzte Frage, wenn der Name der Migrationsklasse zu sein scheint: m120920_041119_update_users_about kann ich $ this-> addColumn hinzufügen ('users', 'about_ME', 'string AFTER password'); Das _ME muss im Namen der Klasse sein? –

+0

Es funktioniert, aber es funktioniert Tricking; Wenn Yii das SQL erstellt, kopiert es einfach den Wert "type" in sql, und zufällig generiert die Syntax "type AFTER a_column" gültiges SQL. Natürlich bin ich glücklich, von jetzt an zu verwenden, und danke, dass du uns diese Methode gezeigt hast. – realtebo

+2

Eine Menge Zeug wird durch "Tricking" in Yii (und PHP (und Programmierung (und Leben))) s Welt gemacht. –

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

Das funktioniert gut und es ist elegant. Vielen Dank! –

+1

Das ist * der Weg * sollte es sein. – christian