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.