Как создать миграцию в Laravel 5, которая только добавляет столбец к существующей таблице
Я пытаюсь добавить ряд новых столбцов в общую таблицу 'users', которая поставляется с установкой Laravel 5.
Однако я создаю новую миграцию, которая выполняет Schema::create следующим образом:
Schema::create('users', function(Blueprint $table)
{
$table->increments('id');
$table->string('username');
$table->string('email')->unique();
$table->string('password', 60);
$table->string('avatar');
$table->string('first_name');
$table->string('last_name');
$table->string('nickname');
$table->rememberToken();
$table->timestamps();
});
В вышеупомянутом я добавил avatar
, first_name
, last_name
а также nickname
колонны.
Моя проблема в том, что когда я бегу php artisan migrate
это говорит мне Nothing to migrate.
Как мне создать "обновленную" миграцию?
3 ответа
С http://laravel.com/docs/5.1/migrations
Создание столбцов
Чтобы обновить существующую таблицу, мы будем использовать table
метод на фасаде схемы. Словно create
метод, table
Метод принимает два аргумента: имя таблицы и Closure, который получает экземпляр Blueprint, который мы можем использовать для добавления столбцов в таблицу:
Schema::table('users', function ($table) {
$table->string('email');
});
Также посмотрите на это из http://laravel.com/docs/5.1/migrations
Откат / миграция в одной команде Примечание: при этом методе вы потеряете все данные в БД
Команда migrate: refresh сначала откатит все ваши миграции баз данных, а затем запустит команду migrate. Эта команда эффективно воссоздает всю вашу базу данных:
php artisan migrate:refresh
Вы также можете удалить строку миграции из таблицы миграции для конкретной миграции (миграция пользователей обычно выполняется с пакетом 1). Затем запустите php artisan migrate снова.
Каждая миграция хранится в таблице миграций (проверьте базу данных), поэтому для воссоздания таблицы необходимо удалить запись миграции для этой таблицы (пользователей) в таблице миграций.
Общий процесс:
Я потерял 6 часов, чтобы решить ту же проблему, с которой вы столкнулись, но теперь это как еда.
Шаг 1: Предварительные условия:
Перед изменением столбца обязательно добавьте зависимость doctrine/dbal в ваш файл composer.json. Библиотека Doctrine DBAL используется для определения текущего состояния столбца и создания запросов SQL, необходимых для внесения указанных изменений в столбец.
Шаг 2: Для создания столбцов:
Табличный метод на фасаде схемы может использоваться для обновления существующих таблиц. Как и метод create, метод table принимает два аргумента: имя таблицы и Closure, который получает экземпляр Blueprint, который вы можете использовать для добавления столбцов в таблицу:
Schema::table('users', function (Blueprint $table) {
$table->string('email');
});
Шаг 3 (при необходимости):
Используйте следующую команду в консоли
php artisan migrate:refresh