CodeIgniter Миграция только таблица миграции создана - PullRequest
0 голосов
/ 10 ноября 2018

Теперь я пытаюсь использовать миграцию в свой проект Codeigniter.

Я создал несколько файлов миграции на application/migrations и Migrate.php в качестве контроллера для создания таблицы при попытке перенести таблицу.

Я приведу образец файла миграции и то, что находится в Migrate.php в и этой теме.

Проблема возникает, когда я запускаю миграцию, я запускаю с cli php index.php migrate current. Это показывает, что migration success, но только migrations таблица, которая создана. У кого-нибудь есть такая же проблема со мной?

Migrate.php

<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Migrate extends CI_Controller {

    function __construct()
    {
        parent::__construct();
        if(! $this->input->is_cli_request()) {
            show_404();
            exit;
        }
        $this->load->library('migration');
    }

    function current()
    {
        if ($this->migration->current()) {
            log_message('error', 'Migration Success.');
            echo "Migration Success";
        } else {
            log_message('error', $this->migration->error_string());
            echo $this->migration->error_string();
        }
    }

    function rollback($version)
    {
        if ($this->migration->version($version)) {
            log_message('error', 'Migration Success.');
            echo "Migration Success";
        } else {
            log_message('error', $this->migration->error_string());
            echo $this->migration->error_string();
        }
    }

    function latest()
    {
        if ($this->migration->latest()) {
            log_message('error', 'Migration Success.');
            echo "Migration Success";
        } else {
            log_message('error', $this->migration->error_string());
            echo $this->migration->error_string();
        }
    }

}

Пример файла миграции.

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class Migration_Add_Facility_Types extends CI_Migration {

    public function up()
    {
        $this->dbforge->add_field(array(
            'id' => array(
                'type' => 'INT',
                'constraint' => 5,
                'unsigned' => TRUE,
                'auto_increment' => TRUE
            ),
            'name' => array(
                'type' => 'VARCHAR',
                'constraint' => '100',
            ),
        ));
        $this->dbforge->add_key('id', TRUE);
        $this->dbforge->create_table('facility_types');
    }

    public function down()
    {
        $this->dbforge->drop_table('facility_types');
    }
}

1 Ответ

0 голосов
/ 10 ноября 2018

Каждая миграция выполняется в числовом порядке вперед или назад в зависимости от используемого метода. Доступны два стиля нумерации:

Последовательный : каждая миграция нумеруется последовательно, начиная с 001. Каждое число должно состоять из трех цифр, и в последовательности не должно быть пробелов. (Это была схема нумерации до CodeIgniter 3.0.)

Отметка времени : каждая миграция нумеруется с использованием отметки времени, когда была создана миграция, в формате ГГГГММДДЧЧИИСИ (например, 20121031100537). Это помогает предотвратить конфликты нумерации при работе в командной среде и является предпочтительной схемой в CodeIgniter 3.0 и более поздних версиях. Нужный стиль можно выбрать с помощью параметра $ config ['igration_type '] в файле application / config /igration.php.

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

001_add_blog.php (последовательная нумерация)

20121031100537_add_blog.php (нумерация меток времени)

Из документов вы должны следовать этой схеме именования файлов, если вы решили использовать временные метки, чтобы перед именем файла указывался полный формат даты и времени, а затем подчеркивайте имя файла.

Именно поэтому я предпочитаю использовать последовательное именование файлов, потому что его проще использовать, оно добралось до файла настроек миграции и изменило migration_type на последовательное, а в migration_version присвойте ему последний номер файла.

Допустим, у вас есть 001_create_sessions.php, 002_create_users.php и 003_create_post.php .. затем в migration_version дайте 3, но не забывайте последовательный тип.

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