How do I run CodeIgniter migrations? How do I run CodeIgniter migrations? codeigniter codeigniter

How do I run CodeIgniter migrations?


Using these pages as references: Running via the CLIand Migration Classyou're able to restrict access to your migration controller to command line with something along these lines (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());    }  }}

then to execute your latest migration, cd into the root of your project directory and run:

php index.php migrate

but when you attempt to access via webserver domain.com/migrate you will see the text in the script above.


I am not sure this is the right way to do it, But It works for me.

I created a controller named 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());      }       }}

Then from browser I will call this url to execute index action in migrate controller
Eg : http://localhost/index.php/migrate/index/1


You can also run some version for down or up migrations:

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

For CLI run this command php index.php migrate version 5, where 5 is version of migration. If version is more of current migration - migration up, else - down to entered version.