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

标签 php yii

我正在做一个项目并使用 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,可能有一个行为?

非常感谢。

最佳答案

如果您仍然想玩这个把戏,可以尝试以下方法。

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'),
),

关于php - Yii 迁移和自定义抽象数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13571755/

相关文章:

php - 从单选按钮内的 PHP echo 调用 JavaScript 函数

javascript - 将选中的表行添加到电子邮件正文

带有关系表的 YII CActiveDataProvider

php - 在 Yii 中重置 CDbConnection

php - 使用电子商务跟踪将数据发送到Google Universal Analytics中的自定义维度和指标

PHP:从 HTML 形式的输入中获取数据,然后使用 filter_array 输出

php - 获取与另一列中的值有关的值

javascript - 关闭 jQuery 对话框

php - yii2 advanced 中的公共(public)资源放在哪里?

php - Yii urlManager 无限参数