没有命名空间的类 yii yii\base yii\behaviors yii\caching yii\captcha yii\console yii\console\controllers yii\console\widgets yii\data yii\db yii\db\conditions yii\db\cubrid yii\db\cubrid\conditions yii\db\mssql yii\db\mssql\conditions yii\db\mysql yii\db\oci yii\db\oci\conditions yii\db\pgsql yii\db\sqlite yii\db\sqlite\conditions yii\di yii\filters yii\filters\auth yii\grid yii\helpers yii\i18n yii\log yii\mail yii\mutex yii\rbac yii\rest yii\test yii\validators yii\web yii\widgets

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/yiichina/yii2/blob/api/framework/console/controllers/MigrateController.php

管理应用程序迁移。

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

此命令提供跟踪迁移历史记录的支持, 通过迁移进行升级或下载,并创建新的迁移骨架。

迁移历史记录存储在数据库表中 称作 $migrationTable。该表将在第一次执行此命令时自动创建, 如果它不存在的话。您也可以手动创建它, 如下所示:

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

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

# creates a new migration named 'create_user_table'
yii migrate/create create_user_table

# applies ALL new migrations
yii migrate

# reverts the last applied migration
yii migrate/down

从 2.0.10 开始,你可以使用带命名空间的迁移。要启用此功能,您应在应用程序配置中为控制器配置 $migrationNamespaces 属性:

return [
    'controllerMap' => [
        'migrate' => [
            'class' => 'yii\console\controllers\MigrateController',
            'migrationNamespaces' => [
                'app\migrations',
                'some\extension\migrations',
            ],
            //'migrationPath' => null, // allows to disable not namespaced migration completely
        ],
    ],
];

公共属性

隐藏继承的属性

属性类型描述被定义在
$action yii\base\Action The action that is currently being executed. yii\base\Controller
$behaviors yii\base\Behavior[] List of behaviors attached to this component yii\base\Component
$color boolean 是否在输出中启用 ANSI 颜色。 如果未设置,则仅为支持 ANSI 颜色的终端启用 ANSI 颜色。 yii\console\Controller
$comment string 正在创建的表的注释。 yii\console\controllers\MigrateController
$compact boolean 指示是否应该压缩控制台输出。 如果设置为 true,则迁移中运行的各个命令将不会输出到控制台。 默认为 false,换句话说输出是完全详细的。 yii\console\controllers\BaseMigrateController
$db yii\db\Connection|array|string 应用迁移时要使用的 DB 连接对象或应用程序组件 ID。 从版本 2. yii\console\controllers\MigrateController
$defaultAction string 默认的命令操作。 yii\console\controllers\BaseMigrateController
$fields array 列定义字符串,用于创建迁移代码。 每个定义的格式为 COLUMN_NAME:COLUMN_TYPE:COLUMN_DECORATOR。分隔符是 ,。 例如,--fields="name:string(12):notNull:unique" 生成大小为 12 的字符串列,该列不是 null 且唯一的值。 注意:主键是自动添加的,默认情况下名为 id。 如果你想使用另一个名称,则可以明确地指定它比如 --fields="id_key:primaryKey,name:string(12):notNull:unique" yii\console\controllers\MigrateController
$generatorTemplateFiles array 用于自动生成迁移代码的一组模板路径。 键是模板类型,值是路径或别名。支持的类型是: - create_table: 表创建模板 - drop_table: 表删除模版 - add_column: 添加新的列模板 - drop_column: 删除列模板 - create_junction: 创建连接模板 yii\console\controllers\MigrateController
$help boolean 是否显示有关当前命令的帮助信息。 yii\console\Controller
$helpSummary string yii\console\Controller
$id string The ID of this controller. yii\base\Controller
$interactive boolean 是否以交互方式运行命令。 yii\console\Controller
$layout null|string|false The name of the layout to be applied to this controller's views. yii\base\Controller
$migrationNamespaces array 包含迁移类的命名空间列表。 如果前缀为 @ 迁移命名空间应该可解析为 path alias,例如如果你指定 命名空间 app\migrations,代码 Yii::getAlias('@app/migrations') 应该能够返回 此命名空间引用的目录的文件路径。 这与Yii的 autoloading conventions 相适应。 例如: `php [ 'app\migrations', 'some\extension\migrations', ] ` yii\console\controllers\BaseMigrateController
$migrationPath string|array 包含迁移类的目录。这可以是 一个 path alias 或一个目录路径。 位于此路径的迁移类应该在没有命名空间的情况下声明。 使用 $migrationNamespaces 属性以防你使用命名空间迁移。 如果你已经设置了 $migrationNamespaces,你可以按顺序将此字段设置为 null 禁用未命名空间的迁移的使用。 从版本 2. yii\console\controllers\BaseMigrateController
$migrationTable string 用于保存应用的迁移信息的表的名称。 yii\console\controllers\MigrateController
$module yii\base\Module The module that this controller belongs to. yii\base\Controller
$modules yii\base\Module[] All ancestor modules that this controller is located within. yii\base\Controller
$passedOptionValues array 与传递的选项对应的属性 yii\console\Controller
$passedOptions array 执行期间传递的选项的名称 yii\console\Controller
$route string The route (module ID, controller ID and action ID) of the current request. yii\base\Controller
$templateFile string 用于生成新迁移的模板文件。 这可以是一个 path alias(例如 "@app/migrations/template. yii\console\controllers\MigrateController
$uniqueId string The controller ID that is prefixed with the module ID (if any). yii\base\Controller
$useTablePrefix boolean 指示生成的表名是否应考虑 DB连接的 tablePrefix 设置。例如,如果表名为 post 生成器将返回 {{%post}} yii\console\controllers\MigrateController
$view yii\base\View|yii\web\View The view object that can be used to render views or view files. yii\base\Controller
$viewPath string 可以为相对视图名称添加前缀的视图路径。 yii\base\ViewContextInterface

公共方法

隐藏继承的方法

方法描述被定义在
__call() Calls the named method which is not a class method. yii\base\Component
__clone() This method is called after the object is created by cloning an existing one. yii\base\Component
__construct() yii\base\Controller
__get() Returns the value of a component property. yii\base\Component
__isset() Checks if a property is set, i.e. defined and not null. yii\base\Component
__set() Sets the value of a component property. yii\base\Component
__unset() Sets a component property to be null. yii\base\Component
actionCreate() 创建新的迁移。 yii\console\controllers\BaseMigrateController
actionDown() 通过恢复旧迁移来降级应用程序。 yii\console\controllers\BaseMigrateController
actionFresh() 截断整个数据库并从头开始迁移。 yii\console\controllers\BaseMigrateController
actionHistory() 显示迁移历史记录。 yii\console\controllers\BaseMigrateController
actionMark() 将迁移历史记录修改为指定的版本。 yii\console\controllers\BaseMigrateController
actionNew() 显示未应用的新迁移。 yii\console\controllers\BaseMigrateController
actionRedo() 重做最后几次迁移。 yii\console\controllers\BaseMigrateController
actionTo() 升级或降级至指定版本。 yii\console\controllers\BaseMigrateController
actionUp() 通过应用新迁移来升级应用程序。 yii\console\controllers\BaseMigrateController
actions() Declares external actions for the controller. yii\base\Controller
afterAction() This method is invoked right after an action is executed. yii\base\Controller
ansiFormat() 使用 ANSI 代码格式化字符串。 yii\console\Controller
attachBehavior() Attaches a behavior to this component. yii\base\Component
attachBehaviors() Attaches a list of behaviors to the component. yii\base\Component
beforeAction() 此方法是在执行操作之前(在所有可能的过滤器之后)调用的。 它检查 $migrationPath 的存在。 yii\console\controllers\MigrateController
behaviors() Returns a list of behaviors that this component should behave as. yii\base\Component
bindActionParams() 将参数绑定到动作。 当 yii\base\Action 开始使用给定的参数运行时,此方法被调用。 此方法首先将参数与操作可用的 options绑定。 然后验证给定的参数。 yii\console\Controller
canGetProperty() Returns a value indicating whether a property can be read. yii\base\Component
canSetProperty() Returns a value indicating whether a property can be set. yii\base\Component
className() Returns the fully qualified name of this class. yii\base\BaseObject
confirm() 要求用户通过键入 y 或 n 来确认。 yii\console\Controller
createAction() Creates an action based on the given action ID. yii\base\Controller
detachBehavior() Detaches a behavior from the component. yii\base\Component
detachBehaviors() Detaches all behaviors from the component. yii\base\Component
ensureBehaviors() Makes sure that the behaviors declared in behaviors() are attached to this component. yii\base\Component
findLayoutFile() Finds the applicable layout file. yii\base\Controller
getActionArgsHelp() 返回动作的匿名参数的帮助信息。 yii\console\Controller
getActionHelp() 返回指定动作的详细帮助信息。 yii\console\Controller
getActionHelpSummary() 返回描述指定动作的一行简短摘要。 yii\console\Controller
getActionOptionsHelp() 返回动作选项的帮助信息。 yii\console\Controller
getBehavior() Returns the named behavior object. yii\base\Component
getBehaviors() Returns all behaviors attached to this component. yii\base\Component
getHelp() 返回此控制器的帮助信息。 yii\console\Controller
getHelpSummary() 返回描述此控制器的一行简短摘要。 yii\console\Controller
getModules() Returns all ancestor modules of this controller. yii\base\Controller
getOptionValues() 返回与动作 ID 的选项对应的属性 子类可以重写此方法以指定可能的属性。 yii\console\Controller
getPassedOptionValues() 返回与传递的选项对应的属性。 yii\console\Controller
getPassedOptions() 返回执行期间传递的有效选项的名称。 yii\console\Controller
getRoute() Returns the route of the current request. yii\base\Controller
getUniqueId() Returns the unique ID of the controller. yii\base\Controller
getView() Returns the view object that can be used to render views or view files. yii\base\Controller
getViewPath() yii\base\ViewContextInterface
hasEventHandlers() Returns a value indicating whether there is any handler attached to the named event. yii\base\Component
hasMethod() Returns a value indicating whether a method is defined. yii\base\Component
hasProperty() Returns a value indicating whether a property is defined for this component. yii\base\Component
init() Initializes the object. yii\base\BaseObject
isColorEnabled() 返回一个指示是否启用 ANSI 颜色的值。 yii\console\Controller
off() Detaches an existing event handler from this component. yii\base\Component
on() Attaches an event handler to an event. yii\base\Component
optionAliases() 返回选项别名。 子类可以重写此方法以指定别名选项。 yii\console\controllers\MigrateController
options() 返回操作的有效选项的动作(id) 选项要求存在一个名为选项名的 公共成员变量。 子类可以重写此方法以指定可能的选项。 yii\console\controllers\MigrateController
prompt() 提示用户输入并验证它。 yii\console\Controller
render() Renders a view and applies layout if available. yii\base\Controller
renderContent() Renders a static string by applying a layout. yii\base\Controller
renderFile() Renders a view file. yii\base\Controller
renderPartial() Renders a view without applying layout. yii\base\Controller
run() Runs a request specified in terms of a route. yii\base\Controller
runAction() 使用指定的动作 ID 和参数运行动作。 如果动作 ID 为空,则该方法将使用 $defaultAction yii\console\Controller
select() 为用户提供可供选择的选项。给予 '?' 作为输入将显示 可供选择的选项列表及其解释。 yii\console\Controller
setView() Sets the view object to be used by this controller. yii\base\Controller
setViewPath() Sets the directory that contains the view files. yii\base\Controller
stderr() 将字符串打印到 STDERR。 yii\console\Controller
stdout() 将字符串打印到 STDOUT。 yii\console\Controller
trigger() Triggers an event. yii\base\Component

受保护的方法

隐藏继承的方法

方法描述被定义在
addDefaultPrimaryKey() 如果未指定主键,则将默认主键添加到字段列表中。 yii\console\controllers\MigrateController
addMigrationHistory() 将新迁移条目添加到历史记录中。 yii\console\controllers\MigrateController
createMigration() 创建新的迁移实例。 yii\console\controllers\MigrateController
createMigrationHistoryTable() 创建迁移历史表。 yii\console\controllers\MigrateController
generateMigrationSourceCode() 生成新的迁移源 PHP 代码。 子类可以重写此方法,为进程添加额外的逻辑或变动。 yii\console\controllers\MigrateController
generateTableName() 如果 useTablePrefix 等于 true,然后表名将包含 前缀格式。 yii\console\controllers\MigrateController
getActionMethodReflection() yii\console\Controller
getMigrationHistory() 返回迁移历史记录。 yii\console\controllers\MigrateController
getMigrationNameLimit() 返回迁移的最大名称长度。 yii\console\controllers\MigrateController
getNewMigrations() 返回未应用的迁移。 yii\console\controllers\BaseMigrateController
includeMigrationFile() 包括给定迁移类名称的迁移文件。 yii\console\controllers\BaseMigrateController
migrateDown() 使用指定的迁移类降级。 yii\console\controllers\BaseMigrateController
migrateToTime() 迁移到过去指定的应用时间。 yii\console\controllers\BaseMigrateController
migrateToVersion() 迁移到特定版本。 yii\console\controllers\BaseMigrateController
migrateUp() 使用指定的迁移类进行升级。 yii\console\controllers\BaseMigrateController
parseDocCommentDetail() 返回 docblock 的完整描述。 yii\console\Controller
parseDocCommentSummary() 返回 docblock 的第一行。 yii\console\Controller
parseDocCommentTags() 将注释块解析为标记。 yii\console\Controller
parseFields() 解析命令行迁移字段。 yii\console\controllers\MigrateController
removeMigrationHistory() 从历史记录中删除现有迁移。 yii\console\controllers\MigrateController
truncateDatabase() 截断数据库。 应在子类中覆盖此方法以实现清除数据库的任务。 yii\console\controllers\MigrateController

Events

隐藏继承的事件

事件类型描述被定义在
EVENT_AFTER_ACTION yii\base\ActionEvent An event raised right after executing a controller action. yii\base\Controller
EVENT_BEFORE_ACTION yii\base\ActionEvent An event raised right before executing a controller action. yii\base\Controller

常量

隐藏继承的常量

常量描述被定义在
BASE_MIGRATION 'm000000_000000_base' 虚拟迁移的名称,标记整个迁移历史记录的开头。 yii\console\controllers\BaseMigrateController
EXIT_CODE_ERROR 1 Deprecated 自 2.0.13。使用 \yii\console\controllers\ExitCode::UNSPECIFIED_ERROR 替代。 yii\console\Controller
EXIT_CODE_NORMAL 0 Deprecated 自 2.0.13。使用 \yii\console\controllers\ExitCode::OK 替代。 yii\console\Controller
MAX_NAME_LENGTH 180 迁移名称的最大长度。 yii\console\controllers\MigrateController

属性详情

$comment 公共 属性 (自版本 2.0.14 可用)

正在创建的表的注释。

public string $comment ''
$db 公共 属性

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

$fields 公共 属性 (自版本 2.0.7 可用)

列定义字符串,用于创建迁移代码。

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

注意:主键是自动添加的,默认情况下名为 id。 如果你想使用另一个名称,则可以明确地指定它比如 --fields="id_key:primaryKey,name:string(12):notNull:unique"

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

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

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

  • create_table: 表创建模板
  • drop_table: 表删除模版
  • add_column: 添加新的列模板
  • drop_column: 删除列模板
  • create_junction: 创建连接模板
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 string $migrationTable '{{%migration}}'
$templateFile 公共 属性

用于生成新迁移的模板文件。 这可以是一个 path alias(例如 "@app/migrations/template.php") 或文件路径。

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

指示生成的表名是否应考虑 DB连接的 tablePrefix 设置。例如,如果表名为 post 生成器将返回 {{%post}}

public boolean $useTablePrefix false

方法详情

addDefaultPrimaryKey() 受保护 方法 (自版本 2.0.7 可用)

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

protected void addDefaultPrimaryKey(&$fields)
$fields array

解析字段

addMigrationHistory() 受保护 方法

将新迁移条目添加到历史记录中。

protected void addMigrationHistory($version)
$version string

迁移版本名称。

beforeAction() 公共 方法

此方法是在执行操作之前(在所有可能的过滤器之后)调用的。 它检查 $migrationPath 的存在。

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

要执行的动作。

return boolean

是否应继续执行该动作。

createMigration() 受保护 方法

创建新的迁移实例。

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

迁移类名称

return yii\db\Migration

迁移实例

createMigrationHistoryTable() 受保护 方法

创建迁移历史表。

protected void createMigrationHistoryTable()
generateMigrationSourceCode() 受保护 方法 (自版本 2.0.8 可用)

生成新的迁移源 PHP 代码。 子类可以重写此方法,为进程添加额外的逻辑或变动。

protected string generateMigrationSourceCode($params)
$params array

生成参数,通常存在以下参数:

  • name: string 迁移基本名称
  • className: string 迁移类名
return string

生成的 PHP 代码。

generateTableName() 受保护 方法 (自版本 2.0.8 可用)

如果 useTablePrefix 等于 true,然后表名将包含 前缀格式。

protected string generateTableName($tableName)
$tableName string

要生成的表名。

getMigrationHistory() 受保护 方法

返回迁移历史记录。

protected array getMigrationHistory($limit)
$limit integer

要返回的历史记录中的最大记录数。null 表示 "no limit"。

return array

迁移历史记录

getMigrationNameLimit() 受保护 方法 (自版本 2.0.13 可用)

返回迁移的最大名称长度。

子类可以重写此方法以定义限制。

protected integer|null getMigrationNameLimit()
return integer|null

迁移的最大名称长度,如果没有限制则为 null

optionAliases() 公共 方法 (自版本 2.0.8 可用)

返回选项别名。 子类可以重写此方法以指定别名选项。

public array optionAliases()
return array

选项别名对操作有效, 其中键是选项的别名,值是选项名。

options() 公共 方法

返回操作的有效选项的动作(id) 选项要求存在一个名为选项名的 公共成员变量。 子类可以重写此方法以指定可能的选项。

请注意,通过选项设置的值不可用 直到调用 beforeAction()

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

当前请求的动作 id

return string[]

对操作有效的选项名称

parseFields() 受保护 方法 (自版本 2.0.7 可用)

解析命令行迁移字段。

protected array parseFields()
return array

使用以下字段分析结果:

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

从历史记录中删除现有迁移。

protected void removeMigrationHistory($version)
$version string

迁移版本名称。

truncateDatabase() 受保护 方法 (自版本 2.0.13 可用)

截断数据库。 应在子类中覆盖此方法以实现清除数据库的任务。

protected void truncateDatabase()
throws yii\base\NotSupportedException

如果没有被覆盖