Фреймворк CodeIgniter Version 2.1.3


Класс миграций

Миграции — это удобный путь изменять структуру и организацию вашей базы данных. Вы можете редактировать фрагменты SQL руками, но тогда вы должны нести ответственность за других разработчиков, сказав им, что они должны идти и запускать их. Вы также должны отслеживать изменения, необходимые при следующем развертывании.

Таблица базы данных migration отслеживает, какие миграции произошли, так что все, что вам надо будет сделать, это обновить файлы вашего приложения и вызвать $this->migrate->current() чтобы запустить миграции. Текущая версия находится в config/migration.php.

Создание миграции

Это будет первой миграцией для нового сайта, который имеет блог. Все миграции сохраняются в директорию application/migrations/ и имеют имена, такие как: 001_add_blog.php.

defined('BASEPATH') OR exit('Доступ к скриптам запрещен.');

class Migration_Add_blog extends CI_Migration {

	public function up()
	{
		$this->dbforge->add_field(array(
			'blog_id' => array(
				'type' => 'INT',
				'constraint' => 5,
				'unsigned' => TRUE,
				'auto_increment' => TRUE
			),
			'blog_title' => array(
				'type' => 'VARCHAR',
				'constraint' => '100',
			),
			'blog_description' => array(
				'type' => 'TEXT',
				'null' => TRUE,
			),
		));

		$this->dbforge->create_table('blog');
	}

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

Затем в application/config/migration.php установите $config['migration_version'] = 1;.

Пример использования

В этом примере некоторый простой код размещается в application/controllers/migrate.php для обновления схемы.

$this->load->library('migration');

if ( ! $this->migration->current())
{
	show_error($this->migration->error_string());
}

Справка по функциям

$this->migration->current()

Текущая миграция, которая установлена в параметре $config['migration_version'] файла application/config/migration.php.

$this->migration->latest()

Это работает так же, как и current(), но вместо того, чтобы искать $config['migration_version'] класс миграций будет использовать самую новую версию миграций, найденную в файловой системе.

$this->migration->version()

Версии могут сохраняться для откатывания изменений или шагов вперед, к определенным версиям. Это работает также, как current(), но игнорирует $config['migration_version'].

$this->load->library('migration');

$this->migration->version(5);

Параметры миграций

Ниже приведен список всех доступных конфигурационных опций для миграций.

Параметр Значение по умолчанию Опции Описание
migration_enabled FALSE TRUE / FALSE Включает или выключает миграции.
migration_version 0 Нет Текущая версия, которую должна использовать БД.
migration_path APPPATH.'migrations/' Нет Путь к директориям миграций.
    Поддержать сайт на родительском проекте КГБ