demmonico / yii2-migration

Yii2 迁移类

安装: 132

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 3

分支: 1

开放问题: 0

类型:yii2-extension

v1.0.0 2016-11-16 09:54 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:53:11 UTC


README

##描述 Yii2 迁移类 Migration 提供比基本 Yii2 类更灵活的使用接口,因此可以用它来代替基本类。它与基本迁移类具有向后兼容性。

##使用

这是使用新接口的一些迁移示例。

class m000000_000000_tbl_country extends Migration
{
    // common table's info
    protected $tableName = '{{%country}}';
    //
    //
    // structure table's info
    protected $columns = [
        'code'                      => 'CHAR(2) NOT NULL PRIMARY KEY comment "ISO 3166-1 alpha-2"',
        self::COLUMN_NAME           => 'VARCHAR(255) NOT NULL',
        'phone_country'             => 'VARCHAR(10) NOT NULL',
        'language'                  => 'CHAR(2) DEFAULT NULL comment "ISO 639-1"',
        'currency'                  => 'CHAR(3) DEFAULT NULL comment "ISO 4217"',
        self::COLUMN_ISACTIVE       => 'TINYINT(1) UNSIGNED NOT NULL DEFAULT '.self::BOOL_ON,
        self::COLUMN_ORDER          => 'INT(11) UNSIGNED NOT NULL DEFAULT 1000',
        self::COLUMN_CREATED        => 'DATETIME NOT NULL',
        self::COLUMN_UPDATED        => 'DATETIME DEFAULT NULL',
    ];
    //
    protected $indexKeys = [self::COLUMN_ISACTIVE, self::COLUMN_ORDER, 'phone_country', 'currency'];
    //
    protected $foreignKeys = [
        'language' => [
            'refTable' => self::TABLE_LANGUAGE,
            'refColumn'=>'code',
        ],
    ];
    //
    //
    // common table's info
    protected $insertColumns = [
        'code',
        self::COLUMN_NAME,
        'phone_country',
        'language',
        'currency',
        self::COLUMN_CREATED,
        self::COLUMN_UPDATED,
    ];
    //
    protected $insertRows = [
        ['UK',  'United Kingdom',   '44',   'EN', 'GBP'],
        ['USA', 'United States',    '1',    'EN', 'USD'],
        ['UA',  'Ukraine',          '380',  'RU', 'UAH'],
    ];

}

###属性

  • $tableName 是一个表名。必填属性。您可以使用常量(见下文)。
  • $columns 是列的列表。必填属性。将自动添加 'Created' 和 'Updated' 列。
  • $indexKeys 是索引键的列表。如果您想创建简单的索引,请使用简单的数组;如果您需要创建唯一键,请使用关联键('phone_country' => true)。
  • $foreignKeys 是外键的列表。使用类似于 foreignKeyThisTable => relatedTableName 的简单数组来创建与相关表 id 列的关联,或者您可以使用关联数组。
  • $insertColumns 是插入列的列表。如果您想在表创建后立即插入一些默认数据,请使用它。
  • $insertRows 是插入行的列表。如果您想在表创建后立即插入一些默认数据,请使用它。

您还可以使用映射接口来在单个位置存储表名,并使用常量如 self::TABLE_NAME。

class m000000_000000_tbl_country extends Migration implements DbMapInterface
{
    // common table's info
    protected $tableName = self::TABLE_COUNTRY;
}

您还可以调整其他选项,例如

  • $tableOptions
  • $isAutoAppendDateTime
  • $insertSingleColumnName
  • $insertCreatedColumnName
  • $insertUpdatedColumnName
  • $insertStatusUpdatedColumnName