web-dev-qa-db-fra.com

Comment exécuter les migrations CodeIgniter?

Je sais comment les créer via http://codeigniter.com/user_guide/libraries/migration.html

Mais une fois que j'ai créé mes fichiers de migration, comment les exécuter?

42
Shamoon

Je ne suis pas sûr que ce soit la bonne façon de le faire, mais cela fonctionne pour moi.

J'ai créé un contrôleur nommé 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());
      }   
    }
}

Ensuite, à partir du navigateur, j'appellerai cette URL pour exécuter l'action index dans le contrôleur migrate
Par exemple: http: //localhost/index.php/migrate/index/1

26
RSK

En utilisant ces pages comme références: Exécution via l'interface CLI et Classe de migration vous pouvez restreindre l'accès à votre contrôleur de migration à la ligne de commande avec quelque chose le long de ces lignes (application/contrôleurs /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());
    }
  }
}

puis pour exécuter votre dernière migration, cd dans la racine de votre répertoire de projet et lancez:

php index.php migrate

mais lorsque vous tentez d'accéder via le serveur Web domain.com/migrate, vous verrez le texte dans le script ci-dessus.

58
twmulloy

Vous pouvez également exécuter une version pour les migrations vers le bas ou vers le haut:

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

Pour CLI, exécutez cette commande php index.php migrate version 5, où 5 est une version de la migration. Si la version est plus de la migration actuelle - migration vers le haut, sinon - vers le bas vers la version entrée.

5
joni jones

Il s'agit des migrations de base de données Codeigniter les plus simples

  1. Configurez application/database.php selon les paramètres de nom de votre base de données.
  2. Créer une application/config 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. Dans application\migration.php, changez $config['migration_enabled'] = TRUE;.
  2. ouvrez CLI dans le dossier et tapez php index.php migrate
0
Bidyashish Kumar

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

Essayez ceci, j'ai écrit une bibliothèque pour cela qui peut être utilisée très facilement via la CLI. Il peut être utilisé pour créer des fichiers de migration et exécuter des migrations en arrière ou en avant.

0
Aimal Azmi