web-dev-qa-db-ja.com

CodeIgniter移行を実行するにはどうすればよいですか?

http://codeigniter.com/user_guide/libraries/migration.html で作成する方法を知っています。

しかし、移行ファイルを作成したら、どのように実行しますか?

42
Shamoon

これが正しい方法であるかどうかはわかりませんが、私には有効です。

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

26
RSK

これらのページを参照として使用: 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経由でアクセスしようとすると、上記のスクリプトにテキストが表示されます。

58
twmulloy

ダウンまたはアップマイグレーション用にいくつかのバージョンを実行することもできます。

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は移行のバージョンです。バージョンが現在の移行のバージョンである場合-移行アップ、そうでない場合-入力されたバージョンにダウン。

5
joni jones

これは最も簡単なCodeigniterデータベースの移行です

  1. Application/database.phpをデータベース名の設定に合わせて構成します。
  2. 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. Application\migration.phpで$config['migration_enabled'] = TRUE;を変更します。
  2. フォルダーでCLIを開き、php index.php migrateと入力します
0

https://github.com/AimalAzmi/codeigniter-migrations

これを試してください。CLIを使用して非常に簡単に使用できるライブラリを作成しました。移行ファイルを作成し、移行を前後に実行するために使用できます。

0
Aimal Azmi