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?
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
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.
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.
<?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";
}
}
}
?>
".
$config['migration_enabled'] = TRUE;
.php index.php migrate
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.