Как добавить один столбец в таблицу БД с миграциями Laravel? - PullRequest
0 голосов
/ 14 октября 2018

Я использую файлы миграции Laravel, чтобы помочь настроить схему MariaDB для моего проекта.Он отлично работает для начальной настройки таблицы схемы, но после того, как она была создана, как (если это вообще возможно) я могу добавить одно поле в файл миграции и создать только одно это поле в БД, не затрагиваялюбое из существующих полей / данных?

В качестве примера, скажем, у меня есть метод up, подобный следующему:

public function up()
{
    Schema::create('test_table', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->timestamps();
    });
}

А затем я хочу добавить descполе выглядит следующим образом:

public function up()
{
    Schema::create('test_table', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('desc')->nullable();
        $table->timestamps();
    });
}

Если после добавления поля desc я запусту php artisan migrate, будет ли он работать должным образом или испортит уже существующий материал?Я боюсь попробовать, не зная, что произойдет, и я хотел сначала проверить.

Кроме того, я попытался просмотреть документацию Laravel для ответа на этот вопрос (https://laravel.com/docs/5.7/migrations),, но не смог 'не могу найти ничего уместного.
Спасибо.

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

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

php artisan make:migration add_desc_field_in_test_table --table=test_table

Затем в функции up() в вашем файле migration создайте поле:

public function up()
{
    Schema::table('test_table', function (Blueprint $table) {
        $table->string('desc')->nullable();
    });
}

Это будетНе путайте текущую структуру таблицы.Это просто добавит столбец desc в test_table.

0 голосов
/ 14 октября 2018

Обычно вы должны создать новую миграцию, где вы просто добавляете новое поле.Метод up должен выглядеть следующим образом:

public function up()
{
    Schema::table('test_table', function (Blueprint $table) {
        $table->string('desc')->nullable()->after('name');
    });
}

Обратите внимание, что вы не используете здесь Schema::create, но Schema::table для обновления существующей таблицы.

Конечно, если у вас нетЕсли вы развернули свое приложение и можете начать с нуля, вы можете изменить существующую миграцию, но, если вы не уверены, лучшим способом является создание новой миграции, в которой вы изменяете только существующую таблицу.

...