Schema Builder: создать таблицу, если она не существует

Я использую код ниже в Schema Builder для создания таблицы.

Schema::create('tblCategory', function (Blueprint $table) {
    $table->increments('CategoryID');
    $table->string('Category', 40);
    $table->unique('Category', 'tblCategory_UK_Category');
    $table->timestamps();
});

Вот проблема в том, что если мне нужно создать новую таблицу, все старые сценарии запускаются и показывают, что эта таблица уже существует.

Есть ли способ создать таблицу, если она не существует с помощью Schema builder?

Ответ 1

Попробуйте это

if (!Schema::hasTable('tblCategory')) {
     Schema::create('tblCategory', function($table){
            $table->engine = 'InnoDB';
            $table->increments('CategoryID');
            $table->string('Category', 40);
            $table->unique('Category', 'tblCategory_UK_Category');
            $table->timestamps();
    }
}

Ответ 2

Пожалуйста, проверьте ответ здесь

Чтобы создать новую таблицу, существует только одна проверка с помощью функции Laravel Schema hasTable.

Но если вы хотите удалить любую таблицу, прежде чем проверять ее существование, тогда Schema имеет функцию с именем dropIfExists.

Schema::dropIfExists('table_name');

Откроется таблица, если таблица будет существовать.

Ответ 3

DB::transaction(function () {
        // Create your table here with schema builder.
});

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

https://laravel.com/docs/5.6/database