Добавление нового столбца к существующей таблице в миграции

Я не могу понять, как добавить новый столбец в существующую таблицу базы данных с помощью фреймворка Laravel.

Я попытался отредактировать файл миграции, используя...

<?php

public function up()
{
    Schema::create('users', function ($table) {
        $table->integer("paid");
    });
}

В терминале я выполняю команды php artisan migrate:install и migrate.

Как мне добавить новые колонки?

Комментарии к вопросу (2)
Решение

Для создания миграции вы можете использовать команду migrate:make в Artisan CLI. Используйте конкретное имя, чтобы избежать столкновения с существующими моделями

для Laravel 3:

php artisan migrate:make add_paid_to_users

для Laravel 5+:

php artisan make:migration add_paid_to_users_table --table=users

Затем вам нужно использовать метод Schema::table() (поскольку вы обращаетесь к существующей таблице, а не создаете новую). И вы можете добавить столбец следующим образом:

public function up()
{
    Schema::table('users', function($table) {
        $table->integer('paid');
    });
}

и не забудьте добавить опцию отката:

public function down()
{
    Schema::table('users', function($table) {
        $table->dropColumn('paid');
    });
}

После этого вы можете запускать миграции:

php artisan migrate

Все это хорошо описано в документации по Laravel 3:

И для Laravel 4 / Laravel 5:

Редактировать:

используйте $table->integer('paid')->after('whichever_column'); для добавления этого поля после определенного столбца.

Комментарии (20)

Я'МР приплюсовать к mike3875'ы ответ для будущих читателей, используя фреймворк Laravel 5.1 и старше.

Чтобы сделать вещи быстрее, вы можете использовать флаг " и--таблица, что" такой:

php artisan make:migration add_paid_to_users --table="users"

Это позволит добавить "вверх" и "вниз" метод контент автоматически:

/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::table('users', function (Blueprint $table) {
        //
    });
}

Кроме того, вы можете использовать `--создать["и имя_таблицы" и вариант, когда создание новых миграций, который будет добавить больше стандартного на свой миграций. Мелочь, но полезно, когда делаешь их много!

Комментарии (2)

Если вы используете Laravel 5, команда будет выглядеть следующим образом;

php artisan make:migration add_paid_to_users

Все команды для создания вещей (контроллеров, моделей, миграций и т.д.) были перенесены под команду make:.

Хотя команда php artisan migrate осталась прежней.

Комментарии (0)

5.6 фреймворк Laravel # и выше

в случае, если вы хотите добавить новый столбец в качестве внешнего ключа к существующей таблице.

Создать новый миграции, выполнив следующую команду : производитель:миграции

Пример :

php artisan make:migration add_store_id_to_users_table --table=users

В базу данных/папку новый файл миграции, что-то типа миграций :

2018_08_08_093431_add_store_id_to_users_table.php (см. комментарии)

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class AddStoreIdToUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {

            // 1. Create new column
            // You probably want to make the new column nullable
            $table->integer('store_id')->unsigned()->nullable()->after('password');

            // 2. Create foreign key constraints
            $table->foreign('store_id')->references('id')->on('stores')->onDelete('SET NULL');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('users', function (Blueprint $table) {

            // 1. Drop foreign key constraints
            $table->dropForeign(['store_id']);

            // 2. Drop the column
            $table->dropColumn('store_id');
        });
    }
}

После этого выполните команду :

php artisan migrate

В случае, если вы хотите отменить последнее миграции по какой-либо причине, выполните эту команду :

php artisan migrate:rollback

Вы можете найти более подробную информацию о миграции в документации

Комментарии (1)

Вы можете добавить новые колонки в исходном методе Schema::create следующим образом:

Schema::create('users', function($table) {
    $table->integer("paied");
    $table->string("title");
    $table->text("description");
    $table->timestamps();
});

Если вы уже создали таблицу, вы можете добавить дополнительные колонки в эту таблицу, создав новую миграцию и используя метод Schema::table:

Schema::table('users', function($table) {
    $table->string("title");
    $table->text("description");
    $table->timestamps();
});

Документация по этому вопросу достаточно подробна и не слишком изменилась с версии 3 до версии 4.

Комментарии (3)

вы можете просто изменить ваш существующий файл миграции, например добавить столбец в таблицу, а затем в терминале введите :

$ php artisan migrate:refresh
Комментарии (4)

это все работает на фреймворк Laravel 5.1.

во-первых, на вашем терминале выполнить этот код

php artisan make:migration add_paid_to_users --table=users

после этого перейдите в папку проекта и расширения базы данных - миграция и редактирования файлов add_paid_to_users.php добавьте этот код

public function up()
{
    Schema::table('users', function (Blueprint $table) {
         $table->string('paid'); //just add this line
    });
}

после этого вернуться в свой терминал и выполните эту команду

php artisan migrate

надеюсь, что это поможет.

Комментарии (0)

Первый откат предыдущей миграции

php artisan migrate:rollback

После этого, вы можете модифицировать ваш существующий файл миграции (добавлять новые , переименовывать или удалять столбцы) повторно запустить миграцию файл

php artisan migrate
Комментарии (0)

Хотя файла переноса является наилучшей практикой, как уже упоминалось, в крайнем случае можно также добавить столбец с Тинкер.

$ с PHP ремесленника повозиться

Здесь'ы пример один-вкладыш для терминала:

в PHP Схемы::настольный(&#39;пользователей&#39;, функция(\осветить\базы данных\схема\план $таблица){ $таблица->целое число(&#39;и#39;); })

<БР> <БР> (Здесь он отформатирован для удобства чтения) в PHP Схемы::настольный(&#39;пользователей&#39;, функция(\осветить\базы данных\схема\план $таблица){ $таблица->целое число(&#39;и#39;); });

Комментарии (0)