Class yii\console\controllers\MigrateController

继承yii\console\controllers\MigrateController » yii\console\controllers\BaseMigrateController » yii\console\Controller » yii\base\Controller » yii\base\Component » yii\base\BaseObject
实现yii\base\Configurable, yii\base\ViewContextInterface
可用自版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/console/controllers/MigrateController.php

管理应用程序迁移.

迁移意味着对应用程序环境的一组持久更改, 这些更改在不同开发人员之间共享. 例如, 在数据库支持的应用程序中, 迁移可能是指对数据库的一组更改, 例如创建新表, 添加新表列.

该命令支持跟踪迁移历史记录, 通过迁移进行升级或降级以及创建新的迁移框架.

迁移列值记录存储在名为 $migrationTable 的数据库表中. 如果该命令不存在, 它将在第一次执行时自动创建该表. 你也可以手动创建它, 如下所示:

CREATE TABLE migration (
    version varchar(180) PRIMARY KEY,
    apply_time integer
)

以下是次命令的一些常见用法:

# 创建一个名为'create_user_table'的新迁移
yii migrate/create create_user_table

# 应用所有新迁移
yii migrate

# 恢复上一次应用的迁移
yii migrate/down

从 2.0.10 开始, 你可以使用命名空间迁移. 为了启用次功能, 你应该在应用程序配置中为控制器配置 $migrationNamespaces 属性:

return [
    'controllerMap' => [
        'migrate' => [
            'class' => 'yii\console\controllers\MigrateController',
            'migrationNamespaces' => [
                'app\migrations',
                'some\extension\migrations',
            ],
            //'migrationPath' => null, // 允许完全禁用未命名空间的迁移
        ],
    ],
];

公共属性

隐藏继承的属性

属性类型描述定义在
$action yii\base\Action|null 当前正在执行的动作. yii\base\Controller
$behaviors yii\base\Behavior[] 附加到此组件的行为列表. 该属性是只读的. yii\base\Component
$color boolean|null 是否在输出中启用 ANSI 颜色. yii\console\Controller
$comment string 创建表的注释. yii\console\controllers\MigrateController
$compact boolean Indicates whether the console output should be compacted. yii\console\controllers\BaseMigrateController
$db yii\db\Connection|array|string 应用迁移时要使用的数据库连接对象或数据库连接的应用程序组件ID. yii\console\controllers\MigrateController
$defaultAction string The default command action. yii\console\controllers\BaseMigrateController
$fields array 用于创建迁移代码的列定义字符串. yii\console\controllers\MigrateController
$generatorTemplateFiles array 一组用于自动生成迁移代码的模板路径. yii\console\controllers\MigrateController
$help boolean 是否显示有关当前命令的帮助信息. yii\console\Controller
$helpSummary string 该属性是只读的. yii\console\Controller
$id string 该控制器的ID. yii\base\Controller
$interactive boolean 是否以交互方式运行命令. yii\console\Controller
$layout null|string|false 要应用于此控制器的视图的布局的名称. yii\base\Controller
$migrationNamespaces array List of namespaces containing the migration classes. yii\console\controllers\BaseMigrateController
$migrationPath string|array The directory containing the migration classes. yii\console\controllers\BaseMigrateController
$migrationTable string 用于保留已应用的迁移信息的表的名称. yii\console\controllers\MigrateController
$module yii\base\Module 该控制器所属的模块. yii\base\Controller
$modules yii\base\Module[] 该控制器所在的所有祖先模块. 该属性是只读的. yii\base\Controller
$passedOptionValues array 与传递的选项相对应的属性. 该属性是只读的. yii\console\Controller
$passedOptions array 执行期间传递的选项名称. 该属性是只读的. yii\console\Controller
$request yii\console\Request yii\console\Controller
$response yii\console\Response yii\console\Controller
$route string 当前请求的路由(模块ID, 控制器ID和动作ID). 该属性是只读的. yii\base\Controller
$silentExitOnException boolean|null 如果为true, 脚本在出现异常的情况下以ExitCode::OK结尾; 如果为false, ExitCode::UNSPECIFIED_ERROR. yii\console\Controller
$templateFile string The template file for generating new migrations. yii\console\controllers\MigrateController
$uniqueId string 以模块ID(如果有)为前缀的控制器ID. 该属性是只读的. yii\base\Controller
$useTablePrefix boolean 指示生成的表名称是否应考虑数据库连接的tablePrefix设置. yii\console\controllers\MigrateController
$view yii\base\View|yii\web\View 可用于渲染视图或视图文件的视图对象. yii\base\Controller
$viewPath string 包含此控制器的视图文件的目录. yii\base\Controller

公共方法

隐藏继承的方法

方法描述定义在
__call() 调用不是类方法的指定的方法. yii\base\Component
__clone() 在通过克隆现有对象创建对象之后调用此方法. yii\base\Component
__construct() 构造函数. yii\base\Controller
__get() 返回组件属性的值. yii\base\Component
__isset() 检查属性是否已设置, 即已定义且不为null. yii\base\Component
__set() 设置组件属性的值. yii\base\Component
__unset() 将组件属性设置为null. yii\base\Component
actionCreate() Creates a new migration. yii\console\controllers\BaseMigrateController
actionDown() Downgrades the application by reverting old migrations. yii\console\controllers\BaseMigrateController
actionFresh() Drops all tables and related constraints. Starts the migration from the beginning. yii\console\controllers\BaseMigrateController
actionHistory() Displays the migration history. yii\console\controllers\BaseMigrateController
actionMark() Modifies the migration history to the specified version. yii\console\controllers\BaseMigrateController
actionNew() Displays the un-applied new migrations. yii\console\controllers\BaseMigrateController
actionRedo() Redoes the last few migrations. yii\console\controllers\BaseMigrateController
actionTo() Upgrades or downgrades till the specified version. yii\console\controllers\BaseMigrateController
actionUp() Upgrades the application by applying new migrations. yii\console\controllers\BaseMigrateController
actions() 为控制器声明外部动作. yii\base\Controller
afterAction() 执行动作后立即调用该方法. yii\base\Controller
ansiFormat() 使用 ANSI 代码格式化字符串. yii\console\Controller
attachBehavior() 将行为附加到此组件. yii\base\Component
attachBehaviors() 将行为列表附加到组件. yii\base\Component
beforeAction() 在执行动作之前(在所有可能的过滤器之后)立即调用次方法. yii\console\controllers\MigrateController
behaviors() 返回此组件应该具有的行为列表. yii\base\Component
bindActionParams() 将参数绑定到动作. yii\console\Controller
canGetProperty() 返回一个值, 指示属性是否可读取. yii\base\Component
canSetProperty() 返回一个值, 指示属性是否可设置. yii\base\Component
className() 返回此类的完全限定名称. yii\base\BaseObject
confirm() 要求用户输入yn进行确认. yii\console\Controller
createAction() 根据给定的动作ID创建一个动作. yii\base\Controller
detachBehavior() 从组件中分离一个行为. yii\base\Component
detachBehaviors() 分离组件中的所有行为. yii\base\Component
ensureBehaviors() 确保在 behaviors() 中声明的行为已附加到此组件. yii\base\Component
findLayoutFile() 查找适用的布局文件. yii\base\Controller
getActionArgsHelp() 返回动作的匿名参数的帮助信息. yii\console\Controller
getActionHelp() 返回指定动作的详细帮助信息. yii\console\Controller
getActionHelpSummary() 返回描述指定动作的单行简单摘要. yii\console\Controller
getActionOptionsHelp() 返回动作选项的帮助信息. yii\console\Controller
getBehavior() 返回指定的行为对象. yii\base\Component
getBehaviors() 返回附加到此组件的所有行为. yii\base\Component
getHelp() 返回此控制器的帮助信息. yii\console\Controller
getHelpSummary() 返回描述此控制器的单行简单摘要. yii\console\Controller
getModules() 返回此控制器的所有祖先模块. yii\base\Controller
getOptionValues() 返回与动作id的选项相对应的属性. yii\console\Controller
getPassedOptionValues() 返回与传递的选项相对应的属性. yii\console\Controller
getPassedOptions() 返回执行期间传递的选项的名称. yii\console\Controller
getRoute() 返回当前请求的路由. yii\base\Controller
getUniqueId() 返回控制器的唯一ID. yii\base\Controller
getView() 返回可用于渲染视图或视图文件的视图对象. yii\base\Controller
getViewPath() yii\base\ViewContextInterface
hasEventHandlers() 返回一个值, 指示是否有任何处理程序附加到指定的事件. yii\base\Component
hasMethod() 返回一个值, 指示方法是否已定义. yii\base\Component
hasProperty() 返回一个值, 指示属性是否已定义. yii\base\Component
init() 初始化对象. yii\base\Controller
isColorEnabled() 返回一个值, 该值指示是否启用 ANSI 颜色. yii\console\Controller
off() 从该组件分离现有的事件处理程序. yii\base\Component
on() 将事件处理程序附加到事件. yii\base\Component
optionAliases() 返回选项别名. yii\console\controllers\MigrateController
options() 返回动作的有效操作选项. yii\console\controllers\MigrateController
prompt() 提示用户输入并验证输入. yii\console\Controller
render() 渲染视图并应用布局(如果可用). yii\base\Controller
renderContent() 通过应用布局渲染静态字符串. yii\base\Controller
renderFile() 渲染视图文件. yii\base\Controller
renderPartial() 渲染视图而不使用布局. yii\base\Controller
run() 运行根据路由指定的请求. yii\base\Controller
runAction() 使用指定的动作id和参数运行一个动作. yii\console\Controller
select() 给用户一个选择的选项. yii\console\Controller
setView() 设置此控制器使用的视图对象. yii\base\Controller
setViewPath() 设置包含视图文件的目录. yii\base\Controller
stderr() 将字符串打印到 STDERR. yii\console\Controller
stdout() 将字符串打印到 STDOUT. yii\console\Controller
trigger() 触发事件. yii\base\Component

受保护的方法

隐藏继承的方法

方法描述定义在
addDefaultPrimaryKey() 如果未指定主键, 则将默认主键添加到字段列表中. yii\console\controllers\MigrateController
addMigrationHistory() Adds new migration entry to the history. yii\console\controllers\MigrateController
bindInjectedParams() 根据操作方法签名中的类型和名称填充参数. yii\base\Controller
createMigration() 创建一个新的迁移实例. yii\console\controllers\MigrateController
createMigrationHistoryTable() 创建迁移历史表. yii\console\controllers\MigrateController
generateMigrationSourceCode() Generates new migration source PHP code. yii\console\controllers\MigrateController
generateTableName() 如果useTablePrefix等于true, 则表名将包含前缀格式. yii\console\controllers\MigrateController
getActionMethodReflection() yii\console\Controller
getMigrationHistory() Returns the migration history. yii\console\controllers\MigrateController
getMigrationNameLimit() Return the maximum name length for a migration. yii\console\controllers\MigrateController
getNewMigrations() Returns the migrations that are not applied. yii\console\controllers\BaseMigrateController
includeMigrationFile() Includes the migration file for a given migration class name. yii\console\controllers\BaseMigrateController
migrateDown() Downgrades with the specified migration class. yii\console\controllers\BaseMigrateController
migrateToTime() Migrates to the specified apply time in the past. yii\console\controllers\BaseMigrateController
migrateToVersion() Migrates to the certain version. yii\console\controllers\BaseMigrateController
migrateUp() Upgrades with the specified migration class. yii\console\controllers\BaseMigrateController
parseDocCommentDetail() 从文档块返回完整描述. yii\console\Controller
parseDocCommentSummary() 返回文档块的第一行. yii\console\Controller
parseDocCommentTags() 将注释块解析为标签. yii\console\Controller
parseFields() 解析命令行迁移字段. yii\console\controllers\MigrateController
removeMigrationHistory() Removes existing migration from the history. yii\console\controllers\MigrateController
splitFieldIntoChunks() 将字段拆分为大块. yii\console\controllers\MigrateController
truncateDatabase() Truncates the database. yii\console\controllers\MigrateController

事件

隐藏继承的事件

事件类型描述定义在
EVENT_AFTER_ACTION yii\base\ActionEvent 执行控制器动作后立即触发的事件. yii\base\Controller
EVENT_BEFORE_ACTION yii\base\ActionEvent 在执行控制器动作之前触发的事件. yii\base\Controller

常量

隐藏继承的常量

常量描述定义在
BASE_MIGRATION 'm000000_000000_base' The name of the dummy migration that marks the beginning of the whole migration history. yii\console\controllers\BaseMigrateController
EXIT_CODE_ERROR 1 Deprecated since 2.0.13. 改用 yii\console\ExitCode::UNSPECIFIED_ERROR. yii\console\Controller
EXIT_CODE_NORMAL 0 Deprecated since 2.0.13. 改用 yii\console\ExitCode::OK. yii\console\Controller
MAX_NAME_LENGTH 180 迁移名称的最大长度. yii\console\controllers\MigrateController

属性详情

$comment public 属性 (可用自版本: 2.0.14)

创建表的注释.

public string $comment ''
$db public 属性

应用迁移时要使用的数据库连接对象或数据库连接的应用程序组件ID. 从版本2.0.3开始, 这也可以是用于创建对象的配置数组.

$fields public 属性 (可用自版本: 2.0.7)

用于创建迁移代码的列定义字符串.

每个定义的格式为COLUMN_NAME:COLUMN_TYPE:COLUMN_DECORATOR. 分隔符为,. 例如, --fields="name:string(12):notNull:unique" 生成长度为12的字符串列, 该字符串不为null, 且值是唯一的.

Note: 主键会自动添加, 默认情况下命名为id. 如果要使用其它名称, 则可以像--fields="id_key:primaryKey,name:string(12):notNull:unique"那样显示指定名称.

public array $fields = []
$generatorTemplateFiles public 属性 (可用自版本: 2.0.7)

一组用于自动生成迁移代码的模板路径.

键是模板类型, 值是路径或别名. 支持的类型有:

  • create_table: table creating template
  • drop_table: table dropping template
  • add_column: adding new column template
  • drop_column: dropping column template
  • create_junction: create junction template
public array $generatorTemplateFiles = ['create_table' => '@yii/views/createTableMigration.php''drop_table' => '@yii/views/dropTableMigration.php''add_column' => '@yii/views/addColumnMigration.php''drop_column' => '@yii/views/dropColumnMigration.php''create_junction' => '@yii/views/createTableMigration.php']
$migrationTable public 属性

用于保留已应用的迁移信息的表的名称.

public string $migrationTable '{{%migration}}'
$templateFile public 属性

The template file for generating new migrations. This can be either a path alias (e.g. "@app/migrations/template.php") or a file path.

public string $templateFile '@yii/views/migration.php'
$useTablePrefix public 属性 (可用自版本: 2.0.8)

指示生成的表名称是否应考虑数据库连接的tablePrefix设置. 例如, 如果表名称为post, 则生成器将返回{{%post}}.

public boolean $useTablePrefix true

方法详情

addDefaultPrimaryKey() protected 方法 (可用自版本: 2.0.7)

如果未指定主键, 则将默认主键添加到字段列表中.

protected void addDefaultPrimaryKey ( &$fields )
$fields array

解析的字段.

addMigrationHistory() protected 方法

Adds new migration entry to the history.

protected void addMigrationHistory ( $version )
$version string

Migration version name.

beforeAction() public 方法

在执行动作之前(在所有可能的过滤器之后)立即调用次方法.

它检查 $migrationPath 是否存在.

public boolean beforeAction ( $action )
$action yii\base\Action

要执行的动作.

return boolean

该动作是否应继续执行.

createMigration() protected 方法

创建一个新的迁移实例.

protected yii\db\Migration createMigration ( $class )
$class string

迁移类名称.

return yii\db\Migration

迁移实例.

createMigrationHistoryTable() protected 方法

创建迁移历史表.

protected void createMigrationHistoryTable ( )
generateMigrationSourceCode() protected 方法 (可用自版本: 2.0.8)

Generates new migration source PHP code.

Child class may override this method, adding extra logic or variation to the process.

protected string generateMigrationSourceCode ( $params )
$params array

Generation parameters, usually following parameters are present:

  • name: string migration base name
  • className: string migration class name
return string

Generated PHP code.

generateTableName() protected 方法 (可用自版本: 2.0.8)

如果useTablePrefix等于true, 则表名将包含前缀格式.

protected string generateTableName ( $tableName )
$tableName string

The table name to generate.

getMigrationHistory() protected 方法

Returns the migration history.

protected array getMigrationHistory ( $limit )
$limit integer

The maximum number of records in the history to be returned. null for "no limit".

return array

The migration history

getMigrationNameLimit() protected 方法 (可用自版本: 2.0.13)

Return the maximum name length for a migration.

Subclasses may override this method to define a limit.

protected integer|null getMigrationNameLimit ( )
return integer|null

The maximum name length for a migration or null if no limit applies.

optionAliases() public 方法 (可用自版本: 2.0.8)

返回选项别名.

子类可以重写此方法以指定别名选项.

public array optionAliases ( )
return array

对动作有效的选项别名. 其中键是选项的别名, 值是选项的名称.

options() public 方法

返回动作的有效操作选项.

一个选项需要存在一个公共成员变量, 其名称为选项名称. 子类可以重写此方法以指定可能的选项.

Note: 只有在调用 beforeAction() 之后, 才能通过选项设置值.

public string[] options ( $actionID )
$actionID string

当前请求的动作id

return string[]

动作的有效操作选项.

parseFields() protected 方法 (可用自版本: 2.0.7)

解析命令行迁移字段.

protected array parseFields ( )
return array

用以下字段解析结果:

  • fields: array, 解析的字段.
  • foreignKeys: array, 检测到的外键.
removeMigrationHistory() protected 方法

Removes existing migration from the history.

protected void removeMigrationHistory ( $version )
$version string

Migration version name.

splitFieldIntoChunks() protected 方法

将字段拆分为大块.

protected string[]|false splitFieldIntoChunks ( $field )
$field string
truncateDatabase() protected 方法 (可用自版本: 2.0.13)

Truncates the database.

This method should be overwritten in subclasses to implement the task of clearing the database.

protected void truncateDatabase ( )
throws yii\base\NotSupportedException

if not overridden