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