我如何运行CodeIgniter迁移?

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

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

我不知道这是正确的做法,但它适用于我。

我创build了一个名为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()); } } } 

然后从浏览器中,我将调用这个URL来执行migrate控制器中的index操作
例如: http://localhost/index.php/migrate/index/1

使用这些页面作为参考: 通过CLI和Migration 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()); } } } 

然后执行您的最新迁移,cd到您的项目目录的根目录并运行:

 php index.php migrate 

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

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

 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');; } } } 

对于CLI运行这个命令php index.php migrate version 5 ,其中5是迁移版本。 如果版本更多的是当前的迁移 – 迁移,否则 – 下降到input的版本。

https://github.com/AimalAzmi/codeigniter-migrations

试试这个,我已经写了一个库,可以很容易地通过CLI使用。 它可以用来创build迁移文件并向后或向前运行迁移。