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?
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
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.
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.
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.
Il s'agit des Migrations de base de données Codeigniter les plus simples
- Configurer l'application / La base de données.php à vos paramètres de nom de base de données.
- 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";
}
}
}
?>
`.
- Dans application \ migration.php changement
$config['migration_enabled'] = TRUE;
. - ouvrez CLI dans le dossier et tapez
php index.php migrate