Поле date
Поле date в Laravel используется для создания колонки с типом DATE в базе данных. Этот тип предназначен для хранения только даты без временной составляющей. В миграциях метод date вызывается на объекте схемы или blueprint. Он принимает имя колонки первым параметром и возвращает экземпляр класса ColumnDefinition для дополнительной настройки.
Синтаксис
<?php
Schema::create($table, function (Blueprint $table) {
$table->date($column);
});
?>
Пример
Давайте создадим таблицу 'articles' с полем 'published_at' типа date:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up()
{
Schema::create('articles', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->date('published_at');
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('articles');
}
};
?>
Пример
Добавим поле date в существующую таблицу с использованием метода table:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->date('birth_date')->nullable();
});
}
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('birth_date');
});
}
};
?>
Пример с модификаторами
Создадим поле date с дополнительными модификаторами:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up()
{
Schema::create('events', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->date('start_date')->nullable()->default('2026-01-01');
$table->date('end_date')->nullable();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('events');
}
};
?>
Пример использования в модели
В модели Laravel поля date автоматически преобразуются в объекты Carbon:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Article extends Model
{
protected $fillable = [
'title',
'content',
'published_at',
];
protected $casts = [
'published_at' => 'date',
];
}
?>
Пример работы с полем date
Получим все статьи, опубликованные после определённой даты:
<?php
namespace App\Http\Controllers;
use App\Models\Article;
class ArticleController extends Controller
{
public function index()
{
$articles = Article::where('published_at', '>', '2026-01-01')->get();
foreach ($articles as $article) {
echo $article->title . ': ' . $article->published_at->format('d.m.Y');
}
}
}
?>
Результат выполнения кода:
"Article 1: 15.01.2026"
"Article 3: 20.01.2026"
Пример с текущей датой
Установим значение поля date как текущую дату с помощью метода useCurrent:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up()
{
Schema::table('orders', function (Blueprint $table) {
$table->date('order_date')->useCurrent();
});
}
public function down()
{
Schema::table('orders', function (Blueprint $table) {
$table->dropColumn('order_date');
});
}
};
?>
Смотрите также
-
поле
dateTime,
которое хранит дату и время -
поле
timestamp,
которое хранит временную метку с автоматическим обновлением -
поле
time,
которое хранит только время -
модификатор
useCurrent,
который устанавливает текущую дату по умолчанию