# CodeIgniter 用户指南 版本 2.2.0

编辑文档、查看近期更改请 登录 或 注册 找回密码

搜索用户指南

查看原文

# 迁移类

迁移是一种结构化与有组织的方式来更改数据库的方便方法。你可以手动编辑 SQL 的片段，然后告知其他开发人员他们需要运行这些片段。你还得保持追踪他们的变化，追踪那些下次部署时那些需要运行但是会与生产设备冲突的变化。

数据库表的 迁移 追踪那些已经运行的迁移信息，你需要做的就是更新你的应用文件并执行 $this->migrate->current() 来计算出哪个迁移信息是需要被运行的。迁移信息的当前版本可以在这里 config/migration.php 找到。

## 创建一个迁移信息

这将是一个 blog 站点的第一个迁移信息。所有的迁移信息都在文件夹 application/migrations/ 里，并且具有这样的名称，例如：`001_add_blog.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->create_table('blog');
      }

      public function down()
      {
        $this->dbforge->drop_table('blog');
      }

然后在文件 application/config/migration.php 中设置 $config['migration_version'] = 1;。

## 使用范例

在该范例中，一些简单的代码被放置在 application/controllers/migrate.php 以更新架构(schema)。

    $this->load->library('migration');

    if ( ! $this->migration->current())
    {
      show_error($this->migration->error_string());
    }

# 方法参考

## $this->migration->current()

当前的迁移信息是什么，被设置于 $config['migration_version'] 在文件 application/config/migration.php 中。

## $this->migration->latest()

这个方法的工作方式和 current() 很像，但是不会从 $config['migration_version'] 寻找迁移信息，而是在文件系统中寻找最新的迁移信息。

## $this->migration->version()

迁移版本可以用来回滚或前进到特定版本。它工作起来像是 current() 但是会忽略 $config['migration_version'] 的设置。

    $this->load->library('migration');

    $this->migration->version(5);

## 迁移参数

以下是迁移类的配置选项列表。

参数 | 默认值 | 可选项 | 描述
--- | --- | --- | ---
migration_enabled | FALSE | TRUE / FALSE | 启用或禁用迁移。
migration_version | 0 | 无 | 当前数据库所使用的版本。
migration_path | APPPATH.'migrations/' | 无 | 迁移信息所在路径。

翻译贡献者: csfhc, Hex, huboo
最后修改: 2013-11-29 10:20:55