demmonico / yii2-migration
Yii2 迁移类
v1.0.0
2016-11-16 09:54 UTC
Requires
- php: >5.5.0
- demmonico/yii2-helpers: *
- yiisoft/yii2: ~2.0.0
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