Подтвердить что ты не робот

Как выполнить миграции CodeIgniter?

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

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

4b9b3361

Ответ 1

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

Я создал контроллер с именем 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

Ответ 2

Использование этих страниц в качестве ссылок: Запуск через 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 выше.

Ответ 3

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

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 - вниз до введенной версии.

Ответ 4

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

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

Ответ 5

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

  • Настройте приложение /database.php на свои настройки имени базы данных.
  • Создать приложение /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";
      }
    }
  }
?>