如何运行CodeIgniter迁移?

Sha*_*oon 42 migration codeigniter codeigniter-2

我知道如何通过http://codeigniter.com/user_guide/libraries/migration.html创建它们

但是,一旦我创建了我的迁移文件,我该如何运行它们?

twm*_*loy 59

使用这些页面作为参考:通过CLIMigration Class 运行, 您可以将对迁移控制器的访问权限限制为命令行(application/controllers/migrate.php):

<?php  if ( ! defined('BASEPATH')) exit("No direct script access allowed");

class Migrate extends CI_Controller {

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

    $this->input->is_cli_request() 
      or exit("Execute via command line: php index.php migrate");

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

  public function index()
  {
    if(!$this->migration->latest()) 
    {
      show_error($this->migration->error_string());
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

然后执行最新的迁移,进入项目目录的根目录并运行:

php index.php migrate
Run Code Online (Sandbox Code Playgroud)

但是当您尝试通过webserver domain.com/migrate访问时,您将在上面的脚本中看到该文本.

  • 请注意,上述答案仅适用于CI2.CI3安装应将文件另存为application/controllers/Migrate.php (2认同)

RSK*_*RSK 27

我不确定这是正确的做法,但它对我有用.

我创建了一个名为migrate (controllers/migrate.php)的控制器.

<?php defined("BASEPATH") or exit("No direct script access allowed");

class Migrate extends CI_Controller{

    public function index($version){
        $this->load->library("migration");

      if(!$this->migration->version($version)){
          show_error($this->migration->error_string());
      }   
    }
}
Run Code Online (Sandbox Code Playgroud)

然后从浏览器我将调用此url indexmigrate控制器中执行操作
例如:http://localhost/index.php/migrate/index/1

  • 我想你只想基于`ENVIRONMENT`来执行 (11认同)
  • 迁移后,我建议您从服务器中删除此控制器,直到下次迁移。这是一个公共 URL,如果您将其保留在服务器中,任何人都可以轻松删除您的表。 (2认同)

jon*_*nes 5

您还可以为向下或向上迁移运行某个版本:

if(!defined('BASEPATH')) exit('No direct script access allowed');
class Migrate extends CI_Controller{

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

     public function version($version)
     {
         if($this->input->is_cli_request())
         {
            $migration = $this->migration->version($version);
            if(!$migration)
            {
                echo $this->migration->error_string();
            }
            else
            {
                echo 'Migration(s) done'.PHP_EOL;
            }
        }
        else
        {
            show_error('You don\'t have permission for this action');;
        }
     }
 }
Run Code Online (Sandbox Code Playgroud)

对于CLI,运行此命令php index.php migrate version 5,其中5是迁移版本.如果版本更多是当前迁移 - 向上迁移,否则 - 向下到输入版本.