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


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

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

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

         $table->integer("paid");


    });
}

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

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

Author: Peter verleg, 2013-05-28

8 answers

Чтобы создать миграцию, вы можете использовать команду migrate:make в командной строке 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:

Изменить:

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

 337
Author: Phill Sparks, 2016-06-24 11:52:24

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

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

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"] при создании новых миграций, которые добавят больше шаблонов в ваши миграции. Небольшой момент, но полезный, когда их много!

 40
Author: camelCase, 2016-02-12 14:29:50

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

php artisan make:migration add_paid_to_users

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

php artisan migrate хотя это все то же самое.

 24
Author: mikelovelyuk, 2015-04-09 11:38:57

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

 14
Author: tplaner, 2013-05-28 12:26:44

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

$ php artisan migrate:refresh
 8
Author: Mahana Delacour, 2017-08-17 14:01:42

Ларавель 5.6

На случай, если вы хотите добавить новый столбец в качестве ВНЕШНЕГО КЛЮЧА в существующую таблицу.

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

Пример :

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

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

 3
Author: chebaby, 2018-08-08 10:34:58

Это работает на 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

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

 2
Author: Rosidin Bima, 2018-01-27 11:26:29

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

php artisan migrate:rollback

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

php artisan migrate
 0
Author: noobgrammer, 2018-09-26 06:52:24