Метод table
Метод table класса Schema применяется для
изменения структуры уже существующей таблицы. Первым параметром
передаётся имя таблицы, вторым - замыкание, которое получает
объект Blueprint для определения изменений. Этот метод
обычно используется в миграциях внутри метода up.
Синтаксис
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
Schema::table($table, function (Blueprint $table) {
// изменения таблицы
});
?>
Пример
Давайте добавим новое поле 'email' типа string
в таблицу '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->string('email', 255);
});
}
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('email');
});
}
};
?>
Пример
Давайте изменим тип поля 'status' с string на
integer в таблице '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->integer('status')->change();
});
}
public function down(): void
{
Schema::table('articles', function (Blueprint $table) {
$table->string('status')->change();
});
}
};
?>
Пример
Давайте удалим поле 'description' из таблицы
'products':
<?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('products', function (Blueprint $table) {
$table->dropColumn('description');
});
}
public function down(): void
{
Schema::table('products', function (Blueprint $table) {
$table->text('description');
});
}
};
?>
Пример
Давайте добавим сразу несколько полей в таблицу
'posts':
<?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->string('author');
$table->integer('views')->default(0);
$table->boolean('is_published')->default(false);
$table->timestamps();
});
}
public function down(): void
{
Schema::table('posts', function (Blueprint $table) {
$table->dropColumn(['author', 'views', 'is_published', 'created_at', 'updated_at']);
});
}
};
?>
Пример
Давайте переименуем поле 'name' в 'full_name'
в таблице '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->renameColumn('name', 'full_name');
});
}
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
$table->renameColumn('full_name', 'name');
});
}
};
?>