Поле time
Метод time применяется в миграциях Laravel при создании схемы таблицы и позволяет добавить столбец для хранения времени. Первым параметром передаётся имя колонки, вторым - необязательный параметр точности (precision) для секунд. Если точность не указана, используется значение по умолчанию - 0 секунд. Значения сохраняются в формате 'HH:MM:SS' и могут быть использованы для фильтрации через метод whereTime.
Синтаксис
<?php
Schema::table('table_name', function (Blueprint $table) {
$table->time($column, $precision = 0);
});
?>
Пример
Создадим таблицу 'events' с полем 'start_time' типа TIME:
<?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('events', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->time('start_time');
$table->timestamps();
});
}
public function down(): void
{
Schema::dropIfExists('events');
}
};
?>
Пример
Создадим поле времени с точностью до микросекунд, передав второй параметр 6:
<?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('tasks', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->time('execution_time', 6);
$table->timestamps();
});
}
public function down(): void
{
Schema::dropIfExists('tasks');
}
};
?>
Пример
Добавим поле времени в существующую таблицу через метод 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(): void
{
Schema::table('events', function (Blueprint $table) {
$table->time('end_time')->nullable();
});
}
public function down(): void
{
Schema::table('events', function (Blueprint $table) {
$table->dropColumn('end_time');
});
}
};
?>
Пример
Используем поле времени в модели для сохранения и извлечения данных:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Event extends Model
{
protected $fillable = ['title', 'start_time'];
protected $casts = [
'start_time' => 'datetime:H:i:s',
];
}
?>
<?php
namespace App\Http\Controllers;
use App\Models\Event;
use Carbon\Carbon;
class EventController extends Controller
{
public function store()
{
$event = Event::create([
'title' => 'Meeting',
'start_time' => '14:30:00',
]);
echo $event->title;
echo $event->start_time;
}
}
?>
Результат выполнения кода:
"Meeting"
"14:30:00"
Пример
Используем методы для работы с временем при фильтрации записей:
<?php
namespace App\Http\Controllers;
use App\Models\Event;
use Illuminate\Http\Request;
class EventController extends Controller
{
public function index(Request $request)
{
$time = $request->input('time', '10:00:00');
$events = Event::whereTime('start_time', '>', $time)->get();
foreach ($events as $event) {
echo $event->title . ' - ' . $event->start_time;
}
}
}
?>
Результат выполнения кода:
"Conference - 11:30:00"
"Workshop - 12:15:00"
"Seminar - 14:30:00"
Смотрите также
-
метод
date,
который создаёт столбец типа DATE -
метод
dateTime,
который создаёт столбец типа DATETIME -
метод
timestamp,
который создаёт столбец типа TIMESTAMP -
метод
timestamps,
который автоматически добавляет поля created_at и updated_at