2016-08-04 3 views
1
$string = 'User name'; 
$default = null; 

Simply from my traits , 
self::integer()->comment($string)->defaultValue($default) 

$ stringは 'word'で、$ defaultは現在 'NULL'です。 私は/yiisoft/yii2/db/からSchemaBuilderTraitを拡張しました。私はYIi2でコメントを変更している間にPGSQLの列スキーマを変更できない

echo self::integer()->comment($string)->defaultValue($default) ; 

それはPHP 5.5で動作し、私は、好きアルターテーブルユーザー

Alter column "userid" TYPE Integer NULL. 

しかし、それは私に結果を返す必要があり

ALTER TABLE "user" ALTER COLUMN "userid" TYPE integer COMMENT "user name"; 

を引き起こします.9ウィンドウ/linux5.6.21とPHP5.6.21ではMYSQLで動作しますが、同じPHPバージョンではPGSQLでは動作しません。

//マイカスタム形質コード:

<?php 
namespace common\models; 

use Yii; 
use yii\db\SchemaBuilderTrait; 

trait AbstractSchemaBuilderTrait 
{ 
    use SchemaBuilderTrait; 
public function many2one($table,$column,$rel_table,$rel_column,$type,$size=null,$string=null,$default=null,$act_delete=null,$act_update=null) 
    { 
     if ($type == 'integer') { 
      return self::integer()->comment($string)->defaultValue($default)." ,ADD CONSTRAINT fk_$table"."_$column FOREIGN KEY($column) REFERENCES $rel_table($rel_column)"; 
     } 
     return self::$type($size)->comment($string)->defaultValue($default)." ,ADD CONSTRAINT fk_$table"."_$column FOREIGN KEY($column) REFERENCES $rel_table($rel_column)"; 
    } 
} 
?> 

は、誰もがこのために助けることができますか?

+0

設定ファイルのコードを表示することはできますか? main.phpの設定で –

+0

が正常に動作しています。 マイ・マイグレーション・スクリプトまたはアップグレード・モジュール・スクリプトから、私のカスタム特性からスキーマを変更しようとしています(私の質問のコード構造を参照してください) yiiとphpのすべてのバージョンでmysqlと同じコードがうまく動作するのは驚きです同じコードはPGSQL 5.6.21ではyii 2.0.9で動作し、php 5.5.9ではyii 2.0.6で動作しません。 問題について理解していただければ幸いです。 質問、私はコードブロックと予想される結果と今すぐ来る結果で更新しました。 –

答えて

1

あなたはこれはしかし唯一available as of Yii 2.0.8ある

$this->addCommentOnColumn('{{%tablename}}', 'columname', 'My New Comment'); 

を使用することができます。

+0

これは適切な解決策ではありません。わずか30個のテーブル内に500個のカラムがある場合はどうなりますか? それぞれのために特別な解決策はありません。 動的な方法が必要 –

+1

はい。 @Akkikodwaniが正しいです。それは私の心配です。ので、移行プロセス中に私はちょうどコメントを変更しています。 $ this-> addCommentOnColumn( '{{%tablename}}'、 'columname'、 'My New Comment');列に対してコメントを追加するために使用されますが、コメントを追加する必要はありませんが、すべての表のすべての列に対して列を動的に変更する必要があります。バックエンドからのモジュールアップグレードプロセスでも同じコードが使用されていますので、一般的なものにする必要があります。 –

関連する問題