首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

移动类 | 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

代码语言:javascript
复制
<?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若要更新架构,请执行以下操作:

代码语言:javascript
复制
<?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混合) - 将迁移版本处理
代码语言:txt
复制
Returns:  TRUE if no migrations are found, current version string on success, FALSE on failure
代码语言:txt
复制
Return type:  mixed
代码语言:javascript
复制
版本可用于回滚更改或以编程方式前进到特定版本。它像`current()`一样工作,但忽略`$ config ['migration_version']`。

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com