РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
161 of 258 menu

Поле dateinterval

Поле dateinterval создаёт колонку для хранения интервалов времени. В качестве значения используется объект DateInterval из стандартной библиотеки PHP. Оно отлично подходит для хранения таких величин, как продолжительность события, срок действия подписки или задержка перед напоминанием.

Первым параметром в атрибут Column передаётся тип поля 'dateinterval'. Дополнительно можно указать параметры nullable, options и другие.

Синтаксис

#[Column(type: 'dateinterval', nullable: nullable, options: options)]

Пример

Давайте создадим сущность Task с полем duration, которое хранит продолжительность выполнения задачи:

<?php namespace AppEntity; use DoctrineORMMapping as ORM; #[ORMEntity] class Task { #[ORMId] #[ORMGeneratedValue] #[ORMColumn(type: 'integer')] private int $id; #[ORMColumn(type: 'string', length: 255)] private string $title; #[ORMColumn(type: 'dateinterval')] private DateInterval $duration; public function getId(): int { return $this->id; } public function getTitle(): string { return $this->title; } public function setTitle(string $title): void { $this->title = $title; } public function getDuration(): DateInterval { return $this->duration; } public function setDuration(DateInterval $duration): void { $this->duration = $duration; } } ?>

Пример

Давайте сохраним задачу с интервалом в 2 часа 30 минут:

<?php namespace AppController; use AppEntityTask; use DoctrineORMEntityManagerInterface; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class TaskController extends AbstractController { #[Route('/task/create', name: 'task_create')] public function create(EntityManagerInterface $em): Response { $task = new Task(); $task->setTitle('article'); $task->setDuration(new DateInterval('PT2H30M')); $em->persist($task); $em->flush(); return new Response('created'); } } ?>

Результат выполнения кода:

"created"

Пример

Давайте прочитаем интервал из базы и выведем его в формате ISO 8601:

<?php namespace AppController; use AppEntityTask; use DoctrineORMEntityManagerInterface; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class TaskController extends AbstractController { #[Route('/task/show/{id}', name: 'task_show')] public function show(int $id, EntityManagerInterface $em): Response { $task = $em->getRepository(Task::class)->find($id); return new Response($task->getDuration()->format('%h hours %i minutes')); } } ?>

Результат выполнения кода для интервала PT2H30M:

"2 hours 30 minutes"

Смотрите также

  • поле date,
    которое хранит дату без времени
  • поле time,
    которое хранит время без даты
  • поле datetime,
    которое хранит дату и время
  • параметр nullable,
    который разрешает значение NULL
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить