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


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

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

 public function up()
{
    Schema::create('users', function($table){

         $table->integer("paid");


    });
}

и в терминале php artisan migrate:install и migrate

как добавить новые столбцы?

8   143   2013-05-28 16:03:43

8 ответов:

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

для Laravel 3:

php artisan migrate:make add_paid_to_users

для Laravel 5+:

php artisan make:migration add_paid_to_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:

Edit:

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

я добавлю к ответу mike3875 для будущих читателей, используя Laravel 5.1 и далее.

чтобы сделать все быстрее, вы можете использовать флаг "--table " следующим образом:

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

Это добавить up и down содержание метода автоматически:

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

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

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

php artisan make:migration add_paid_to_users

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

вы можете добавить новые столбцы в начальный 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.

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

$ php artisan migrate:refresh

laravel 5.6

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

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

пример :

php artisan make:migration add_store_id_to_users_table --table=users

в папке database / migrations у вас есть новый файл миграции, что-то вроде :

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

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

эти вещи работают на laravel 5.1.

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

php artisan make:migration add_paid_to_users --table=users

после этого перейдите в каталог проекта и разверните каталог database - migration и отредактируйте файл add_paid_to_users.php, добавьте этот код

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

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

php artisan migrate

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

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

php artisan migrate:rollback

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

php artisan migrate