2012-09-20 17 views
24

私はAddColumn関数のYii移動位置

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

を使用しています、テーブル内の7位でカラムを追加するには、最後の列が追加されます。私は列を追加する場所を言及することができる方法はありますか?または、after columnキーワードを使用して、新しいカラムをexapmle、passwordカラムの後に追加します。 私はabooutの移行を学んだYii Doc

答えて

40

これは動作するはずです!

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

例:

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

ありがとう!それは:)私は文書でそれを行う方法を見つけることができませんでした、あなたがYiiのために参照する他の何かがあります。最後の質問ですが、移行クラスの名前がm120920_041119_update_users_aboutのように見える場合は、$ this-> addColumn( 'users'、 'about_ME'、 'string after AFTER password')を追加できます。 _MEはクラスの名前でなければなりませんか? –

+0

それは動作しますが、それはトリッキーに動作します。 YiiがSQLを作成するときには、単に 'type'値をsqlにコピーして渡すだけで、 'AFTER a_column'という構文は有効なSQLを生成します。もちろん、私は今から使用することができてうれしく、この方法を教えてくれてありがとう。 – realtebo

+2

多くのものは、Yii(そしてPHP(そしてプログラミング(と人生)))の世界で "トリック"によって作られています。 –

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

これはうまく動作し、エレガントです。ありがとう! –

+1

これはすべき*方法です。 – christian

関連する問題