http://codeigniter.com/user_guide/libraries/migration.html で作成する方法を知っています。
しかし、移行ファイルを作成したら、どのように実行しますか?
これが正しい方法であるかどうかはわかりませんが、私には有効です。
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());
}
}
}
次に、ブラウザからこのURLを呼び出して、index
コントローラーでmigrate
アクションを実行します。
例:http://localhost/index.php/migrate/index/1
これらのページを参照として使用: CLIを介して実行 および 移行クラス これらの行(アプリケーション/コントローラー)に沿ったコマンドラインへの移行コントローラーへのアクセスを制限できます。 /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
ただし、webserver domain.com/migrate経由でアクセスしようとすると、上記のスクリプトにテキストが表示されます。
ダウンまたはアップマイグレーション用にいくつかのバージョンを実行することもできます。
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
は移行のバージョンです。バージョンが現在の移行のバージョンである場合-移行アップ、そうでない場合-入力されたバージョンにダウン。
<?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
これを試してください。CLIを使用して非常に簡単に使用できるライブラリを作成しました。移行ファイルを作成し、移行を前後に実行するために使用できます。