Метод hasColumn
Метод hasColumn класса Schema позволяет проверить,
существует ли определённая колонка в указанной таблице базы данных.
Первым параметром передаётся имя таблицы, вторым - имя колонки.
Метод возвращает bool: true, если колонка существует,
и false в противном случае. Этот метод удобно использовать
в миграциях или консольных командах для проверки структуры таблицы
перед выполнением операций с колонками.
Синтаксис
<?php
Schema::hasColumn($table, $column);
?>
Пример
Давайте проверим, существует ли колонка 'email' в таблице 'users':
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\Route;
Route::get('/check-column', function () {
$res = Schema::hasColumn('users', 'email');
echo $res ? 'true' : 'false';
});
?>
Результат выполнения кода:
"true"
Пример
Давайте проверим, существует ли колонка 'phone' в таблице 'users':
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\Route;
Route::get('/check-phone', function () {
$res = Schema::hasColumn('users', 'phone');
echo $res ? 'true' : 'false';
});
?>
Результат выполнения кода:
"false"
Пример
Давайте проверим существование нескольких колонок в таблице 'posts':
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\Route;
Route::get('/check-columns', function () {
$table = 'posts';
$columns = ['title', 'body', 'published_at'];
$res = [];
foreach ($columns as $column) {
$exists = Schema::hasColumn($table, $column);
$res[$column] = $exists;
echo $column . ': ' . ($exists ? 'true' : 'false') . "\n";
}
});
?>
Результат выполнения кода:
"title: true"
"body: true"
"published_at: false"
Пример
Давайте используем метод hasColumn в миграции для безопасного добавления колонки:
<?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::hasColumn('users', 'phone')) {
Schema::table('users', function (Blueprint $table) {
$table->string('phone')->nullable();
});
}
}
public function down(): void
{
if (Schema::hasColumn('users', 'phone')) {
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('phone');
});
}
}
};
?>
Смотрите также
-
метод
hasTable,
который проверяет существование таблицы -
метод
dropColumn,
который удаляет колонку из таблицы -
метод
renameColumn,
который переименовывает колонку -
метод
table,
который позволяет модифицировать существующую таблицу