Я знаю, как их создать через http://codeigniter.com/user_guide/libraries/migration.html
Но как только я создал файлы миграции, как мне их запустить?
Я знаю, как их создать через http://codeigniter.com/user_guide/libraries/migration.html
Но как только я создал файлы миграции, как мне их запустить?
Я не уверен, что это правильный способ сделать это, но он работает для меня.
Я создал контроллер с именем migrate
(контроллеры/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());
}
}
}
Затем из браузера я назову этот url для выполнения index
действия в контроллере migrate
Например: http://localhost/index.php/migrate/index/1
Использование этих страниц в качестве ссылок: Запуск через CLI и Класс миграции вы можете ограничить доступ к вашему контроллеру миграции в командной строке с помощью чего-то вдоль этих строк (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());
}
}
}
затем выполнить последнюю миграцию cd в корневой каталог вашего проекта и запустить:
php index.php migrate
но при попытке доступа через веб-сервер domain.com/migrate вы увидите текст в script выше.
Вы также можете запустить некоторую версию для переноса вниз или вверх:
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');;
}
}
}
Для CLI выполните эту команду php index.php migrate version 5
, где 5
- это версия миграции. Если версия больше текущей миграции - переход вверх, else - вниз до введенной версии.
https://github.com/AimalAzmi/codeigniter-migrations
Попробуй, я написал для этого библиотеку, которую можно легко использовать через CLI. Его можно использовать для создания файлов миграции и запуска миграции назад или вперед.
<?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";
}
}
}
?>