Метод dropColumn
Метод dropColumn применяется к схеме таблицы через класс Blueprint в миграциях Laravel. Он позволяет удалить существующую колонку из таблицы. Первым параметром передаётся имя колонки в виде строки, вторым - опциональный массив имён колонок для массового удаления.
Синтаксис
<?php
Schema::table('table_name', function (Blueprint $table) {
$table->dropColumn('column_name');
});
?>
Для удаления нескольких колонок сразу можно передать массив:
<?php
Schema::table('table_name', function (Blueprint $table) {
$table->dropColumn(['column1', 'column2', 'column3']);
});
?>
Пример
Давайте создадим миграцию для удаления колонки 'phone' из таблицы 'users':
<?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
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('phone');
});
}
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
$table->string('phone')->nullable();
});
}
};
?>
Пример
Давайте удалим сразу несколько колонок из таблицы '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(): void
{
Schema::table('articles', function (Blueprint $table) {
$table->dropColumn(['meta_title', 'meta_description', 'meta_keywords']);
});
}
public function down(): void
{
Schema::table('articles', function (Blueprint $table) {
$table->string('meta_title')->nullable();
$table->text('meta_description')->nullable();
$table->string('meta_keywords')->nullable();
});
}
};
?>
Пример
Удалим колонку с внешним ключом, предварительно удалив сам внешний ключ:
<?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
{
Schema::table('posts', function (Blueprint $table) {
$table->dropForeign(['user_id']);
$table->dropColumn('user_id');
});
}
public function down(): void
{
Schema::table('posts', function (Blueprint $table) {
$table->foreignId('user_id')->constrained();
});
}
};
?>
Пример
Удалим колонку, используя метод dropColumn внутри миграции с проверкой на существование таблицы:
<?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('products') && Schema::hasColumn('products', 'expired_at')) {
Schema::table('products', function (Blueprint $table) {
$table->dropColumn('expired_at');
});
}
}
public function down(): void
{
if (Schema::hasTable('products')) {
Schema::table('products', function (Blueprint $table) {
$table->date('expired_at')->nullable();
});
}
}
};
?>
Смотрите также
-
метод
renameColumn,
который переименовывает колонку в таблице -
метод
index,
который создаёт индекс для колонки -
метод
foreign,
который создаёт внешний ключ -
класс
Schema,
который управляет схемой базы данных