Метод hasTable
Метод hasTable применяется к фасаду Schema и позволяет проверить наличие таблицы в текущей базе данных. Единственным обязательным параметром является имя таблицы. Метод возвращает булево значение, которое удобно использовать в условных конструкциях при работе с миграциями или динамической генерацией схемы.
Синтаксис
<?php
use Illuminate\Support\Facades\Schema;
Schema::hasTable($table);
?>
Пример
Давайте проверим существование таблицы 'users' в базе данных:
<?php
use Illuminate\Support\Facades\Schema;
$exists = Schema::hasTable('users');
echo $exists ? 'true' : 'false';
?>
Результат выполнения кода:
"true"
Если таблица существует, метод вернёт true, в противном случае - false.
Пример
Используем метод hasTable в условной конструкции для создания таблицы, если она ещё не существует:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
if (!Schema::hasTable('settings')) {
Schema::create('settings', function (Blueprint $table) {
$table->id();
$table->string('key')->unique();
$table->text('value');
$table->timestamps();
});
}
}
public function down(): void
{
Schema::dropIfExists('settings');
}
};
?>
Результат выполнения кода:
"Table 'settings' created successfully"
Пример
Проверим существование нескольких таблиц с помощью метода hasTable:
<?php
use Illuminate\Support\Facades\Schema;
$tables = ['users', 'posts', 'categories'];
$existing = [];
foreach ($tables as $table) {
if (Schema::hasTable($table)) {
$existing[] = $table;
}
}
echo 'Existing tables: ' . implode(', ', $existing);
?>
Результат выполнения кода:
"Existing tables: users, posts"
Смотрите также
-
метод
create,
который создаёт новую таблицу в базе данных -
метод
table,
который изменяет существующую таблицу -
метод
dropIfExists,
который удаляет таблицу, если она существует -
метод
hasColumn,
который проверяет существование колонки в таблице