2012-09-20 9 views
24

chcę dodać kolumnę na siódmym miejscu w tabeli, używamaddColumn pozycja migracja Yii

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

Dodaje kolumnę na końcu. Czy jest jakiś sposób, w którym mogę wymienić miejsce, aby dodać kolumnę? Lub dowolne słowo kluczowe po kolumnie, aby dodać kolumnę po nowej kolumnie, np. W kolumnie hasło. Dowiedziałem się o migracji od Yii Doc

Odpowiedz

40

To powinno działać!

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

przykładów:

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

Dzięki! Zrobiło to :) Nie mogłem znaleźć sposobu, żeby to zrobić w dokumencie, czy jest coś, co odsyłasz do Yii. i jeszcze jedno ostatnie pytanie, kiedy nazwa klasy migracji wydaje się być m120920_041119_update_users_about można dodać $ this-> addColumn ("users", "about_ME", "string AFTER password"); _ME musi być w imieniu klasy? –

+0

Działa, ale działa podstępnie; kiedy Yii komponuje SQL, po prostu "kopiuje i przechodzi" wartość "typu" do sql, a od niechcenia składnia "typ PO kolumny" generuje poprawny SQL. Oczywiście, jestem zadowolony z użycia od teraz i dziękuję za pokazanie nam tej metody. – realtebo

+2

Wiele rzeczy powstaje przez "oszukiwanie" w świecie Yii (i PHP (oraz programowaniu (i życiu))). –

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

To działa dobrze i jest eleganckie. Dzięki! –

+1

TO * jest * tak powinno być. – christian