微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php-Yii迁移和自定义抽象数据类型

我正在研究一个项目,并使用Yii的Migration功能使不同的生产和测试系统保持同步.我必须说我喜欢这个工具.
我的问题是有没有一种方法可以创建自定义抽象数据类型?

我知道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,可能是有行为吗?

非常感谢.

解决方法:

如果您仍然想技巧,可以尝试以下方法.

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'=>array(
    // your initial db configuration here
    'driverMap'=>array('MysqL'=>'MyCustomMysqLSchema'),
),

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐