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?

40
demandé sur RSK 2012-02-06 03:26:21

5 réponses

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 (contrôleurs/migration.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 index action dans migrate controller
Par exemple: http://localhost/index.php/migrate/index/1

27
répondu RSK 2012-02-08 07:32:48

En utilisant ces pages comme références: en cours d'exécution via la CLI et classe de Migration vous pouvez restreindre l'accès à votre contrôleur de migration à la ligne de commande avec quelque chose dans ce sens (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());
    }
  }
}

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

php index.php migrate

Mais lorsque vous essayez d'accéder via le serveur web domain.com/migrate vous verrez le texte dans le script ci-dessus.

54
répondu twmulloy 2012-07-31 16:25:22

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 la version de la migration. Si la version est plus de la migration actuelle-migration vers le haut, sinon-vers le bas pour la version Entrée.

5
répondu joni jones 2013-07-26 16:29:24

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 migrations et exécuter des migrations en arrière ou en avant.

0
répondu Aimal Azmi 2017-11-21 10:35:21

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

  1. Configurer l'application / La base de données.php à vos paramètres de nom de base de données.
  2. Créer 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 changement $config['migration_enabled'] = TRUE; .
  2. ouvrez CLI dans le dossier et tapez php index.php migrate
0
répondu Bidyashish Kumar 2017-12-22 06:57:24