Как запустить миграцию CodeIgniter? - PullRequest
42 голосов
/ 06 февраля 2012

Я знаю, как создать их через http://codeigniter.com/user_guide/libraries/migration.html

Но как только я создал свои файлы миграции, как мне их запустить?

Ответы [ 5 ]

58 голосов
/ 31 июля 2012

Используя эти страницы в качестве ссылок: Работая через 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());
    }
  }
}

затем, чтобы выполнить последнюю миграцию, перейдите в корень каталога вашего проекта и запустите:

php index.php migrate

, но при попытке доступа черезwebserver domain.com/migrate, вы увидите текст в сценарии выше.

26 голосов
/ 08 февраля 2012

Я не уверен, что это правильный способ сделать это, но у меня это работает.

Я создал контроллер с именем 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 controller
Например: http://localhost/index.php/migrate/index/1

5 голосов
/ 26 июля 2013

Вы также можете запустить некоторую версию для миграции вниз или вверх:

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 - версия миграции.Если версия больше текущей миграции - миграция вверх, в противном случае - до введенной версии.

0 голосов
/ 22 декабря 2017

Это простейшая миграция базы данных Codeigniter

  1. Настройте application / database.php в соответствии с настройками имени базы данных.
  2. Создание приложения / конфига 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. В приложении \igration.php измениться $config['migration_enabled'] = TRUE;.
  2. откройте CLI в папке и введите php index.php migrate
0 голосов
/ 21 ноября 2017

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

Попробуйте, я написал для этого библиотеку, которую очень легко использовать через CLI. Его можно использовать для создания файлов миграции и запуска миграций в обратном или прямом направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...