Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter迁移以更改表_Php_Mysql_Codeigniter_Migration_Database Migration - Fatal编程技术网

Php Codeigniter迁移以更改表

Php Codeigniter迁移以更改表,php,mysql,codeigniter,migration,database-migration,Php,Mysql,Codeigniter,Migration,Database Migration,我在codeigniter中进行了迁移,创建了一个包含4列的MySQL表。现在我想更改其中一列的名称,而不丢失该表中的数据 首先,我启用了迁移&将版本设置为1。 然后,我创建了一个文件001\u create\u users.php,并添加了以下代码 class Migration_Create_users extends CI_Migration { public function up(){ $this->dbforge->add_field(

我在codeigniter中进行了迁移,创建了一个包含4列的MySQL表。现在我想更改其中一列的名称,而不丢失该表中的数据

首先,我启用了迁移&将版本设置为1。 然后,我创建了一个
文件001\u create\u users.php
,并添加了以下代码

class Migration_Create_users extends CI_Migration {

    public function up(){

        $this->dbforge->add_field(
            array(
                'id'        => array('type'=>'INT', 'constraint'=>11, 'unsigned'=>TRUE, 'auto_increment'=>TRUE),
                'email'     => array('type'=>'VARCHAR', 'constraint'=>100),
                'password'  => array('type'=>'VARCHAR', 'constraint'=>255),
                'created'      => array('type'=>"TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
            )
        );

        $this->dbforge->add_key('id');
        $this->dbforge->create_table('users');

    }

    public function down(){

        $this->dbforge->drop_table('users');

    }
}
现在我想将列名“
date
”更改为“
created\u at
”。那我该怎么做呢?我是说什么是最好的方法? 还有谁能解释一下如何进行回滚?因为我已经使用Folling控制器来运行迁移

class Migration extends Admin_Controller{

    public function __construct(){
        parent::__construct();
    }

    public function index($version){

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

        if( !$this->migration->version($version)){
            show_error($this->migration->error_string());
        }
        echo "I'm in Migration";
    }

}
因此,如果我运行它,它将运行up()函数。如何通过浏览器执行回滚?我可以创建另一个方法并调用它吗


我仍然不明白迁移实际上是如何工作的,有人能给我解释一下吗?

你可以尝试浏览
http://localhost/migration/index/0
返回到版本0。或者,您可以创建单独的函数“rollback”以回滚到特定版本,并使索引函数仅使用
$this->migration->current()

向上迁移,如果我转到它是回滚吗?这会调用001_迁移中的down()函数吗?或者你能解释一下如何编写回滚吗?基本上,对于回滚,你需要使用你已经在使用的
$this->migration->version()
。您可以从数据库中的迁移表中检查当前版本。转到任何以前的版本都是回滚。所以,基本上当您调用
$this->migration->version()
CI检查数据库并决定是回滚还是向上迁移时。希望这能回答你的问题。是的,我明白了。谢谢