Поле year
Метод year в миграциях Laravel создает столбец типа YEAR, который предназначен для хранения года в формате YYYY. Этот метод принимает имя столбца в качестве первого параметра. Метод возвращает объект ColumnDefinition, что позволяет использовать дополнительные модификаторы, такие как nullable, default, unsigned, index и другие. Столбец year удобен для хранения данных о годе, например, года выпуска продукта, года основания компании или года регистрации события.
Синтаксис
<?php
Schema::table('table_name', function (Blueprint $table) {
$table->year('column_name');
});
?>
Пример
Давайте создадим таблицу 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::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->year('release_year');
$table->timestamps();
});
}
public function down(): void
{
Schema::dropIfExists('products');
}
};
?>
Пример
Добавим поле founded_year в уже существующую таблицу companies, сделав его необязательным:
<?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('companies', function (Blueprint $table) {
$table->year('founded_year')->nullable();
});
}
public function down(): void
{
Schema::table('companies', function (Blueprint $table) {
$table->dropColumn('founded_year');
});
}
};
?>
Пример
Создадим поле production_year со значением по умолчанию и индексом для ускорения поиска:
<?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('items', function (Blueprint $table) {
$table->year('production_year')
->default(2026)
->index()
->comment('Год производства товара');
});
}
public function down(): void
{
Schema::table('items', function (Blueprint $table) {
$table->dropColumn('production_year');
});
}
};
?>