我阅读了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');
}
在我的页面中,我设置了这样的迁移:
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);
}
}
如何调用down()方法?
答案 0 :(得分:8)
将迁移视为 Git 中的版本。
通过调用比当前更早的迁移来调用down()
方法。
假设您在目录application/migrations/
下有3个当前时间的迁移文件。
001_add_clients.php
002_add_customers.php
003_add_blog.php
因此,目前您的应用程序已经过了上面列出的3次迁移,并且您config/migration.php
中的当前迁移状态设置为
$config['migration_table'] = 'migrations';
$config['migration_version'] = 3;
您的名为migrations
的表格version
设置为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');
}
方法调用文件003_add_blog.php
。