Создание файлов миграции
Общая схема работы с миграциями будет следующей. Пусть вы хотите что-то изменить в структуре базы данных. Для этого вы командой artisan
создаете файл с миграцией, затем в этом файле прописываете изменения в структуре базы данных, а затем выполняете еще одну команду artisan
, которая применит описанные вами изменения.
Файлы миграций располагаются в папке database/migrations
. Имя каждого файла состоит из названия миграции и метки времени, которая позволяет фреймворку определять порядок применения миграций.
Файлы миграций создаются с помощью artisan
команды make:migration
, после которой указывается имя миграции. В результате будет создан класс с миграцией, в котором будут методы up
и down
, в методе up
мы должны прописать команды, которые осуществляют миграцию, а в методе down
команды, которые позволят откатить эту миграцию назад:
database/migrations/метка.create_posts_table.php<?php
class ИмяМиграции extends Migration
{
public function up()
{
}
public function down()
{
}
}
Имя миграции должно соответствовать сути изменения. В этом случае Laravel сгенерирует дополнительный код, осуществляющий миграцию и ее откат.
Посмотрим на практике. Давайте создадим миграцию, которая будет создавать таблицу posts
. Для этого в качестве имени миграции выберем create_posts_table
. Теперь выполнем в терминале следующую команду:
php artisan make:migration create_posts_table
В результате Laravel создаст файл с классом миграции. При этом он поймет из названия, что мы хотим создать новую таблицу и сгенерирует доплнительный код для создания и отката этой миграции. Структура созданного файла будет выглядеть следующим образом:
database/migrations/метка.create_posts_table.php<?php
class CreatePostsTable extends Migration
{
public function up()
{
Schema::create('posts', function (Blueprint $table) {
// тут будут команды миграции
});
}
public function down()
{
Schema::dropIfExists('posts');
}
}
Можно использовать опции:
--table
указание имени таблицы--create
миграция будет создавать новую таблицу, а не изменять существующую
php artisan make:migration create_posts_table --create=posts
php artisan make:migration add_votes_to_posts_table --table=posts