¿Cómo puedo ejecutar migraciones de CodeIgniter?


Sé cómo crearlos a través de http://codeigniter.com/user_guide/libraries/migration.html

Pero una vez que he creado mis archivos de migración, ¿cómo puedo ejecutarlos?

Author: RSK, 2012-02-06

5 answers

No estoy seguro de que esta sea la manera correcta de hacerlo, Pero funciona para mí.

He creado un controlador llamado migrate (controladores / migrar.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());
      }   
    }
}

Luego desde el navegador llamaré a esta url para ejecutar index acción en migrate controlador
Eg: http://localhost/index.php / migrate / index/1

 27
Author: RSK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-08 07:32:48

Usando estas páginas como referencias: Ejecutándose a través de la CLI y Clase de migración puede restringir el acceso a su controlador de migración a la línea de comandos con algo en estas líneas (aplicación/controladores/migrar.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());
    }
  }
}

Luego, para ejecutar su última migración, haga un cd en la raíz del directorio de su proyecto y ejecute:

php index.php migrate

Pero cuando intenta acceder a través de un servidor web domain.com/migrate verá el texto en el script de arriba.

 54
Author: twmulloy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-31 16:25:22

También puede ejecutar alguna versión para migraciones hacia abajo o hacia arriba:

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

Para CLI ejecute este comando php index.php migrate version 5, donde 5 es la versión de migración. Si la versión es más de migración actual-migración arriba, de lo contrario - abajo a la versión introducida.

 5
Author: joni jones,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-26 16:29:24

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

Pruebe esto, he escrito una biblioteca para esto que se puede usar muy fácilmente a través de la CLI. Se puede usar para crear archivos de migraciones y ejecutar migraciones hacia atrás o hacia adelante.

 0
Author: Aimal Azmi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-21 10:35:21

Esta es la migración más simple de la base de datos Codeigniter

  1. Configurar la aplicación/base de datos.php a la configuración del nombre de la base de datos.
  2. Crear aplicación/configuración mirate.php `

 <?php defined("BASEPATH") or exit("No direct script access allowed");
  class Migrate extends CI_Controller {
    public function index() {
      if (ENVIRONMENT == 'development') {
        $this->load->library('migration');
        if ( ! $this->migration->current()) {
          show_error($this->migration->error_string());
        } else {
          echo "success";
        }
      } else {
        echo "go away";
      }
    }
  }
?> 

`.

  1. En la aplicación\migration.php change $config['migration_enabled'] = TRUE;.
  2. abra la CLI en la carpeta y escriba php index.php migrate
 0
Author: Bidyashish Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-22 06:57:24