Создание миграции
Для создания миграции используйте команду Artisan под названием "make:migration":php artisan make:migration create_users_table
Если нужно указать свой путь для создания миграций, то используйте параметр --path при запуске команды "make:migration". Этот путь указыватся относительного баззового пути приложения.
Миграция будет создана в папке database/migrations
. К ней будет сохранена метка времени, по которой Laravel поймёт в каком порядке применять миграции.Если в миграции нужно отметить создание новой таблицы или отметить её имя, то можно использовать параметры "--table" и "--create". Эти параметры создают указанную таблицу в файле миграции:
php artisan make:migration create_users_table --create=users
php artisan make:migration add_votes_to_users_table --table=users
Структура миграций
Миграции содержат методы под названием "up" и "down". Первый используется для добавления таблиц, столбцов и индексов в базу данных. А второй отменяет операции, выполненные первым. Оба метода поддерживают использование построителя структур Laravel.Приведём пример использования этих методов, создав таблицу "Food":
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateFoodTable extends Migration{
public function up() {
Schema::create('food', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('taste');
$table->timestamps();
});
}
public function down() {
Schema::drop('food');
}
}?>
Выполнение миграций
Чтобы запустить все миграции выполните команду Artisan под названием "migrate":php artisan migrate
Некоторые миграции могут приводить к потере данных. Поэтому для предотвращения случайного запуска таких миграций запрашивается подтверждение на из выполнение. Чтобы отключить подтверждение (и соглашаться со всеми изменениями), можно использовать ключ "--force":
php artisan migrate --force
При появлении ошибки "class not found" выполните команду
composer dump-autoload
. Затем заново запустите команду "migrate".Откат миграций
Для отмены внесённых миграцией изменений используется команда "migrate:rollback" и "migrate:reset". Первая делает только откат последней миграции, а вторая откатывает все миграции:php artisan migrate:rollback
php artisan migrate:reset
Если нужно откатить сразу несколько миграций (но не все), то используйте ключ "--step" для команды rollback. В значение ключа поставьте количество необходимых откатов. К примеру, откат трём миграций:
php artisan migrate:rollback --step=3
Существует ещё команда "migrate:refresh". Она отменяет изменения всех миграций, а затем выполняет команду "migrate". Как и в предыдущем случае, у этой команды есть возможность отката на определённое количество миграций. Оно указывается после ключа "--step". :
php artisan migrate:refresh
php artisan migrate:refresh --step=3
Особенности переименования таблиц
Перед переименованием таблиц помните о внешних ключах. Проверяйте файлы миграции, чтобы для всех ограничений внешних ключей таблицы были явные имена. Это нужно, чтобы избежать автоматического назначения имён. Иначе имя ограничения внешнего ключа будет ссылаться на имя несуществующей таблицы.Можно управлять ограничениями внешних ключей в миграциях с помощью следующих методов:
<?php
// включает ограничения
Schema::enableForeignKeyConstraints();
// отключает ограничения
Schema::disableForeignKeyConstraints();
?>