Class yii\console\controllers\MigrateController
管理应用程序迁移。
迁移意味着对应用程序环境的一组持久更改, 这些更改在不同的开发人员之间共享。例如,在数据库支持的 应用程序中,迁移可能指对数据库的一组更改, 例如创建一个新表,添加一个新表列。
此命令提供跟踪迁移历史记录的支持, 通过迁移进行升级或下载,并创建新的迁移骨架。
迁移历史记录存储在数据库表中 称作 $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 |
受保护的方法
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 |
属性详情
正在创建的表的注释。
应用迁移时要使用的 DB 连接对象或应用程序组件 ID。 从版本 2.0.3 开始,这也可以是配置数组 用于创建对象。
列定义字符串,用于创建迁移代码。
每个定义的格式为 COLUMN_NAME:COLUMN_TYPE:COLUMN_DECORATOR
。分隔符是 ,
。
例如,--fields="name:string(12):notNull:unique"
生成大小为 12 的字符串列,该列不是 null 且唯一的值。
注意:主键是自动添加的,默认情况下名为 id。
如果你想使用另一个名称,则可以明确地指定它比如
--fields="id_key:primaryKey,name:string(12):notNull:unique"
用于自动生成迁移代码的一组模板路径。
键是模板类型,值是路径或别名。支持的类型是:
create_table
: 表创建模板drop_table
: 表删除模版add_column
: 添加新的列模板drop_column
: 删除列模板create_junction
: 创建连接模板
用于保存应用的迁移信息的表的名称。
用于生成新迁移的模板文件。 这可以是一个 path alias(例如 "@app/migrations/template.php") 或文件路径。
指示生成的表名是否应考虑
DB连接的 tablePrefix
设置。例如,如果表名为
post
生成器将返回 {{%post}}
。
方法详情
如果未指定主键,则将默认主键添加到字段列表中。
protected void addDefaultPrimaryKey(&$fields) | ||
$fields | array | 解析字段 |
将新迁移条目添加到历史记录中。
protected void addMigrationHistory($version) | ||
$version | string | 迁移版本名称。 |
此方法是在执行操作之前(在所有可能的过滤器之后)调用的。 它检查 $migrationPath 的存在。
public boolean beforeAction($action) | ||
$action | yii\base\Action | 要执行的动作。 |
return | boolean | 是否应继续执行该动作。 |
---|
创建新的迁移实例。
protected yii\db\Migration createMigration($class) | ||
$class | string | 迁移类名称 |
return | yii\db\Migration | 迁移实例 |
---|
创建迁移历史表。
protected void createMigrationHistoryTable() |
生成新的迁移源 PHP 代码。 子类可以重写此方法,为进程添加额外的逻辑或变动。
protected string generateMigrationSourceCode($params) | ||
$params | array | 生成参数,通常存在以下参数:
|
return | string | 生成的 PHP 代码。 |
---|
如果 useTablePrefix
等于 true,然后表名将包含
前缀格式。
protected string generateTableName($tableName) | ||
$tableName | string | 要生成的表名。 |
返回迁移历史记录。
protected array getMigrationHistory($limit) | ||
$limit | integer | 要返回的历史记录中的最大记录数。 |
return | array | 迁移历史记录 |
---|
返回迁移的最大名称长度。
子类可以重写此方法以定义限制。
protected integer|null getMigrationNameLimit() | ||
return | integer|null | 迁移的最大名称长度,如果没有限制则为 |
---|
返回选项别名。 子类可以重写此方法以指定别名选项。
public array optionAliases() | ||
return | array | 选项别名对操作有效, 其中键是选项的别名,值是选项名。 |
---|
返回操作的有效选项的动作(id) 选项要求存在一个名为选项名的 公共成员变量。 子类可以重写此方法以指定可能的选项。
请注意,通过选项设置的值不可用 直到调用 beforeAction()。
public string[] options($actionID) | ||
$actionID | string | 当前请求的动作 id |
return | string[] | 对操作有效的选项名称 |
---|
解析命令行迁移字段。
protected array parseFields() | ||
return | array | 使用以下字段分析结果:
|
---|
从历史记录中删除现有迁移。
protected void removeMigrationHistory($version) | ||
$version | string | 迁移版本名称。 |
截断数据库。 应在子类中覆盖此方法以实现清除数据库的任务。
protected void truncateDatabase() | ||
throws | yii\base\NotSupportedException | 如果没有被覆盖 |
---|