如何在CodeIgniter的迁移中使用down()方法?

Jer*_*lle 6 php codeigniter

我阅读了CodeIgniter关于迁移类的文档.我能够执行迁移但是如何在迁移中使用down()函数?

这是文档中的示例

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');
    }
Run Code Online (Sandbox Code Playgroud)

在我的页面中,我设置了这样的迁移:

class Migrate extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->library('migration');
    }

    public function index() {

        $this->load->helper('template');

        if(!$this->migration->current()) {
            show_error($this->migration->error_string());
        } else {
            $data['message'] = 'migrate success';
        }

        renderPage('common/migrate', $data);

    }

}
Run Code Online (Sandbox Code Playgroud)

如何调用down()方法?

Vir*_*ral 8

TL;博士

迁移视为Git中的版本.

down()通过调用比当前更早的迁移来调用方法.

TS;博士

假设您在目录下按当前时间有3个迁移文件application/migrations/.

  1. 001_add_clients.php
  2. 002_add_customers.php
  3. 003_add_blog.php

因此,目前您的应用程序已经过上面列出的3次迁移,并且您的当前迁移状态config/migration.php设置为

$config['migration_table'] = 'migrations';
$config['migration_version'] = 3;
Run Code Online (Sandbox Code Playgroud)

您的表名migrationsversion设置为3.

现在,当您运行$this->migration->current();迁移控制器时,它将不执行任何操作,因为您已处于当前迁移状态.


现在,不知何故,您创建博客的想法失败了,您希望您的应用程序以迁移状态返回002.

您可以通过调用$this->migration->version(2);控制器来调用它

要么

设置$config['migration_version'] = 2;在你config.php$this->migration->current();你的控制器.

这是场景

public function down()
{
    $this->dbforge->drop_table('blog');
}
Run Code Online (Sandbox Code Playgroud)

方法调用文件003_add_blog.php.