Миграции - специальные файлы, в которых описывается структура таблиц в базе данных и которые используются для формирования этих таблиц движком Laravel. Находятся в директории database/migrations
.
Ссылка на документацию: https://laravel.ru/docs/v5/migrations
Файлы содержат в названии дату создания миграции и название таблицы. Это необходимо для последовательного выполнения миграций т.к. таблицы могут быть связаны.
Каждый файл содержит в себе класс с двумя методами: up
и down
. В up
прописываем правила для создания таблиц, в down
правила для удаления таблицы.
В базе данных также есть таблица migrations, в которой хранятся все выполненные миграции, если мы создаем новые миграции и запускаем команду миграций то выполнены будут только последние.
Команды
Создать миграцию для таблицы с именем users
.
php artisan make:migration create_users_table
Запустить миграции
php artisan migrate
Примечание. Миграции можно создать заодно с моделями
php artisan make:model Models/BlogCategory -m
Откатить изменения, связанные с последними миграциями
php artisan migrate:rollback
Примечание. Сразу с мигарциями можно выполнять сидирование, добавив флаг --seed.
Следующая команда отменит все миграции, создаст их заново и запустит сиды.
php artisan migrate:refresh --seed
Основные методы
Метод | Описание |
$table->id(); | Создаст поле id с ключом autoincrement и типомbitgInt(20) . |
$table->increments('id'); | Создаст поле id с ключом autoincrement и типом Int(10) . |
$table->string('name'); | Поле с типом varchar(255) . |
$table->float('summ'); | Поле с типом float . |
$table->timestamp('time'); | Поле с типом timestamp . |
$table->text('comment'); | Поле с типом text . |
Методы-модификаторы
Дополнительные методы, позволяющие указать аттрибуты поля, типа null
, unique
и т.д. Указываются сразу после основного метода.
Метод | Описание |
->unique(); | Поле будет уникальным (недоступным для записи уже существующего значения) |
->nullable(); | Возможно, чтобы в поле был записан NULL. |
->default($value); | Значение по умолчанию для поля. |
->comment('comment'); | Добавляет комментарий к полю. |
Методы-заготовки
Такие методы сразу создают поля с нужными параметрами для определенных целей.
Метод | Описание |
$table->timestamps(); | Создаст 2 поля:
|
$table->rememberToken(); |
Создаст поле:
|
Индексы
Навешивание индексов для полей.
Примечание. Некотоыре из индексов уже есть в модификаторах, например,
unique
. Но можно писать их отдельно для читаемости.
Метод | Описание |
$table->unique('email'); | Индекс уникальный. |
$table->primary('id'); | Индекс первичный. |
$table->index('state'); | Индекс базовый. |
Зависимости
Метод | Описание |
$table->foreign('user_id')->references('id')->on('users'); | Создаст зависимость поля user_id текущей таблицы от поля id в таблице users . |
Примечание. Эта мигарция обязательно должна идти после миграции с таблицей users, иначе будет ошибка.