Метод dropIfExists
Метод dropIfExists класса Schema предназначен для удаления таблицы из базы данных. В отличие от метода drop, данный метод не вызывает ошибку, если удаляемая таблица отсутствует. Первым и единственным параметром передаётся имя таблицы. Метод возвращает void, то есть ничего не возвращает.
Синтаксис
<?php
Schema::dropIfExists($tableName);
?>
Пример
Давайте удалим таблицу 'articles' с проверкой её существования:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up()
{
Schema::dropIfExists('articles');
}
public function down()
{
Schema::create('articles', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->timestamps();
});
}
};
?>
Пример
Попробуем удалить таблицу, которая не существует. В отличие от метода drop, здесь не будет ошибки:
<?php
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Schema;
class DropTableCommand extends Command
{
protected $signature = 'table:drop {name}';
protected $description = 'Drop table if exists';
public function handle()
{
$tableName = $this->argument('name');
Schema::dropIfExists($tableName);
$this->info("Table '$tableName' dropped or not exists.");
}
}
?>
Результат выполнения команды:
"Table 'non_existent_table' dropped or not exists."
Пример
Давайте напишем миграцию, которая удаляет таблицу только если она существует, с использованием условной проверки:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up()
{
$tables = ['users', 'posts', 'comments'];
foreach ($tables as $table) {
if (Schema::hasTable($table)) {
Schema::dropIfExists($table);
}
}
}
public function down()
{
// rollback code here
}
};
?>
Смотрите также
-
метод
drop,
который удаляет таблицу без проверки существования -
метод
hasTable,
который проверяет существование таблицы в базе данных -
метод
create,
который создаёт новую таблицу в базе данных -
метод
dropColumn,
который удаляет столбцы из существующей таблицы