Как создать миграцию в 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
Другие вопросы по тегам