移动类 | Migrations Class
迁移类
迁移是以结构化和有组织的方式更改数据库的一种方便的方式。您可以手工编辑SQL片段,但随后您将负责告诉其他开发人员他们需要去运行它们。您还必须跟踪下次部署时需要针对生产机器运行哪些更改。
数据库表迁移跟踪哪些迁移已经运行,所以您所要做的就是更新应用程序文件并调用$this->migration->current()以确定应该运行哪些迁移。当前版本可在application/config/移入.php...
- 迁移文件名
- 创建迁移
- 使用实例
- 迁移偏好
- 类引用
迁移文件名
根据所采用的方法,每个迁移都按数字顺序向前或向后运行。有两种编号样式:
顺序:
每个迁移按顺序编号,从001
开始。每个数字必须是三位数字,并且序列中不得有空位。(这是CodeIgniter 3.0之前的编号方案。)
时间戳:
使用YYYYMMDDHHIISS
格式(例如20121031100537
)创建迁移时,使用时间戳对每个迁移进行编号。这有助于防止在团队环境中工作时编号冲突,并且是CodeIgniter 3.0及更高版本中的首选方案。
可以使用$config['migration_type']
在你的application/config/移入.php
档案。
无论您选择使用哪种编号样式,迁移文件的前缀都是迁移号,后面是下划线和迁移的描述性名称。例如:
- 001_add_blog.php(顺序编号)
- 20121031100537_add_blog.php(时间戳编号)
创建迁移
这将是一个拥有博客的新网站的首次迁移。所有迁移都在application / migrations /
目录中,并具有名称,如20121031100537_add_blog.php
。
<?php
defined('BASEPATH') OR exit('No direct script access allowed'
class Migration_Add_blog extends CI_Migration {
public function up()
{
$this->dbforge->add_field(array(
'blog_id' => array(
'type' => 'INT',
'constraint' => 5,
'unsigned' => TRUE,
'auto_increment' => TRUE
),
'blog_title' => array(
'type' => 'VARCHAR',
'constraint' => '100',
),
'blog_description' => array(
'type' => 'TEXT',
'null' => TRUE,
),
)
$this->dbforge->add_key('blog_id', TRUE
$this->dbforge->create_table('blog'
}
public function down()
{
$this->dbforge->drop_table('blog'
}
}
然后进去application/config/移入.php
集$config['migration_version'] = 20121031100537;
...
使用实例
在这个例子中,一些简单的代码放在应用程序/控制器/Migrate.php
若要更新架构,请执行以下操作:
<?php
class Migrate extends CI_Controller
{
public function index()
{
$this->load->library('migration'
if ($this->migration->current() === FALSE)
{
show_error($this->migration->error_string()
}
}
}
迁移偏好
下面是用于迁移的所有配置选项的表。
偏好 | 默认 | 选项 | 描述 |
---|---|---|---|
migration_enabled | 假 | 真假 | 启用或禁用迁移。 |
migration_path | APPPATH.'migrations /” | 没有 | 您的迁移文件夹的路径。 |
migration_version | 0 | 没有 | 数据库应该使用的当前版本。 |
migration_table | 迁移 | 没有 | 用于存储模式版本号的表名。 |
migration_auto_latest | 假 | 真假 | 启用或禁用自动运行迁移。 |
MIGRATION_TYPE | “时间戳” | '时间戳'/'顺序' | 用于命名迁移文件的数字标识符的类型。 |
类引用
class CI_Migrationcurrent()
返回: | 如果未找到迁移,则为TRUE,成功时为当前版本字符串,失败时为FALSE |
---|---|
返回类型: | mixed |
error_string()
返回: | 错误消息 |
---|---|
返回类型: | 串 |
find_migrations()
返回: | 一组迁移文件 |
---|---|
返回类型: | 数组 |
latest()
返回: | 成功时的当前版本字符串,失败时为FALSE |
---|---|
返回类型: | mixed |
version($target_version)
参数: | $ target_version(混合) - 将迁移版本处理 |
---|---|
返回: | 如果未找到迁移,则为TRUE,成功时为当前版本字符串,失败时为FALSE |
返回类型: | mixed |
$ target_version
(混合
) - 将迁移版本处理
Returns: TRUE if no migrations are found, current version string on success, FALSE on failure
Return type: mixed
版本可用于回滚更改或以编程方式前进到特定版本。它像`current()`一样工作,但忽略`$ config ['migration_version']`。