我阅读了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()方法?
将迁移视为Git中的版本.
down()通过调用比当前更早的迁移来调用方法.
假设您在目录下按当前时间有3个迁移文件application/migrations/.
001_add_clients.php002_add_customers.php003_add_blog.php因此,目前您的应用程序已经过上面列出的3次迁移,并且您的当前迁移状态config/migration.php设置为
$config['migration_table'] = 'migrations';
$config['migration_version'] = 3;
Run Code Online (Sandbox Code Playgroud)
您的表名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');
}
Run Code Online (Sandbox Code Playgroud)
方法调用文件003_add_blog.php.
| 归档时间: |
|
| 查看次数: |
2119 次 |
| 最近记录: |