пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Миграции баз данных. Migration

  1. Миграции баз данных. Migration

ВВЕДЕНИЕ (INTRODUCTION)

Миграции похожи на систему контроля версиий, но только для базы данных (БД). Они позволяют команде разработчиков легко изменять схему БД приложения и делиться этими изменениями. Миграции обычно связаны с построителем схем Laravel (Laravel's schema builder) для облегчения создания схемы БД приложения.

Laravel Schema facade предоставляет независимую от БД поддержку создания и управления таблицами. Она предоставляет выразительный API для всех поддерживаемых Laravel БД.

СОЗДАНИЕ (GENERATING MIGRATIONS)

Для создания миграции используйте make:migration Artisan command:

php artisan make:migration create_users_table

Миграция будет помещена в папку database/migrations. Каждое имя файла миграции содержит метку времени, которая позволяет Laravel определять порядок применения миграций.

Опции --table и --create служат для задания имени таблицы и указания будет ли миграция создавать новую таблицу. Проще говоря, эти опции служат для предварительного заполнения генерируемого файла миграции:

php artisan make:migration add_votes_to_users_table --table=users

 
php artisan make:migration create_users_table --create=users

Для определения иного пути для сохранения файла миграции служит опция --path. Путь должен задаваться относительно корня приложения.

СТРУКТУРА МИГРАЦИИ (MIGRATION STRUCTURE)

Класс миграции содержит 2 метода: up и downup нужен для добавления новых таблиц, столбцов или индексов в БД, тогда как down просто отменяет операции, выполненные в методе up.

Внутри обоих методов вы можете использовать конструктор схем для создания и модификации таблиц. Для изучения всех методов, доступных в конструкторе, обратитесь к документации check out its documentation. Давайте взглянем на пример миграции, которая создает таблицу flights:

<?php

 
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

 
class CreateFlightsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('flights', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('airline');
            $table->timestamps();
        });
    }

 
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('flights');
    }
}

ЗАПУСК МИГРАЦИЙ (RUNNING MIGRATIONS)

Для запуска всех еще незапускавшихся миграций используйте команду migrate. Если вы используете Homestead virtual machine, то вы должны запустить ее на вашей VM:

php artisan migrate

Если вы получили сообщение об ошибке "class not found" во время запуска, попробуйте выполнить команду composer dump-autoload и потом вновь выполнить миграцию.

Принудительные миграции на продакшене (Forcing Migrations To Run In Production)

Некоторые операции миграции могут привести к потере данных. В целях защиты от запуска таких команд у вас будет запрашиваться подтверждение перед их выполнением. Для выполнения команд без подтверждения укажите флаг force:

php artisan migrate --force

Откат миграций (Rolling Back Migrations)

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

php artisan migrate:rollback

Команда migrate:reset отменит все миграции:

php artisan migrate:reset

Откат/запуск миграции одной командой (Rollback / Migrate In Single Command)

Команда migrate:refresh выполняет откат всех миграций, а затем запускает команду migrate. Команда полезна для пересоздания всей БД:

php artisan migrate:refresh

 
php artisan migrate:refresh --seed

 

 


22.06.2017; 21:29
хиты: 137
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь