3

私はプロジェクトに取り組んでおり、Yii の移行機能を使用して、さまざまな本番システムとテスト システムの同期を維持しています。私はこのツールが大好きだと言わなければなりません。私の質問は、カスタム抽象データ型を作成する方法はありますか?

Yii の移行機能は、複数の DBMS システムでテーブルを作成できるようになっていることは知っていますが、私のサイトは MySQL に限定されているため、うまくいくはずです。私がやりたいことは次のとおりです。

$this->createTable('test_table', array(
      'key'=>'pk',
      'active_YN'=>'yn',
));

それ以外の:

$this->createTable('test_table', array(
      'key'=>'pk',
      'active_YN'=>'TINYINT(1) NOT NULL DEFAULT \'1\'',
));

おそらく動作で、CDbMigrationを拡張する必要があると思いますか?

どうもありがとう。

4

1 に答える 1

5

それでもトリックを作りたい場合は、ここで試すことができます。

MySQL は、デフォルトでドライバ CMysqlSchema を使用します。カスタム抽象列タイプでこのクラスを拡張する必要があります。

class MyCustomMysqlSchema extends CMysqlSchema
{
    /**
     * @var array the abstract column types mapped to physical column types.
     */
    public $columnTypes=array(
        'pk' => 'int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY',
        'string' => 'varchar(255)',
        'text' => 'text',
        'integer' => 'int(11)',
        'float' => 'float',
        'decimal' => 'decimal',
        'datetime' => 'datetime',
        'timestamp' => 'timestamp',
        'time' => 'time',
        'date' => 'date',
        'binary' => 'blob',
        'boolean' => 'tinyint(1)',
        'money' => 'decimal(19,4)',
        // add your custom abstract column types here
        'yn' => 'tinyint(1) UNSIGNED NOT NULL DEFAULT 1',
    );
}

この新しいドライバーを使用するには、接続が必要です。次のように db 構成を変更します。

'db'=>array(
    // your initial db configuration here
    'driverMap'=>array('mysql'=>'MyCustomMysqlSchema'),
),
于 2012-11-26T23:18:43.417 に答える