Laravel столбец удаления миграции с первичным ключом (ошибка) - PullRequest
0 голосов
/ 21 января 2020

Я уже проверил другие темы, но ни одно решение не помогло мне. Я пытался в последний раз:

public function up()
{
    if(Schema::hasColumn('orders_products_variations','id')) {
        Schema::table('orders_products_variations',function (Blueprint $table) {
            $table->unsignedInteger('id')->change();
            $table->dropPrimary();
            $table->dropColumn('id');
        });
    }
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::table('clients', function (Blueprint $table) {
        $table->string('id');
    });
}

И сообщение об ошибке:

SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1075 Неверное определение таблицы; может быть только один автоматический столбец, и он должен быть определен как ключ (SQL: изменить таблицу orders_products_variations удалить первичный ключ)

Есть идеи?

1 Ответ

0 голосов
/ 21 января 2020

Класс миграции содержит два метода: вверх и вниз. Метод up используется для добавления новых таблиц, столбцов или индексов в вашу базу данных, а метод down должен полностью изменить операции, выполняемые методом up.

Удаление столбцов

Чтобы удалить столбец, используйте dropColumn в построителе схемы внутри метода down

if (Schema::hasColumn('table_name', 'column_name')) {
    Schema::table('table_name', function (Blueprint $table) {
       $table->dropColumn('column_name');
    });
}

Добавление / удаление столбцов

PS Когда вам нужно добавить новый столбец в существующую таблицу в Laravel, вы должны создать новую миграцию.

php artisan make:migration add_column_to_table
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...