Поле datetime
Поле datetime создаётся в сущности через атрибут
ORM\Column с типом datetime. Оно хранит
дату и время в формате Y-m-d H:i:s. Значением поля
в PHP-коде выступает объект DateTime или
DateTimeImmutable. Первым параметром в атрибут
передаётся тип поля, а именованные параметры задают
дополнительные настройки: nullable, unique,
options и другие.
Синтаксис
#[ORM\Column(type: 'datetime', options: [])]
Пример
Давайте создадим сущность Article с полем
createdAt типа datetime:
<?php
namespace AppEntity;
use DoctrineORMMapping as ORM;
#[ORMEntity]
#[ORMTable(name: 'articles')]
class Article
{
#[ORMId]
#[ORMGeneratedValue]
#[ORMColumn(type: 'integer')]
private ?int $id = null;
#[ORMColumn(type: 'string', length: 255)]
private string $title;
#[ORMColumn(type: 'datetime')]
private DateTime $createdAt;
public function getId(): ?int
{
return $this->id;
}
public function getTitle(): string
{
return $this->title;
}
public function setTitle(string $title): self
{
$this->title = $title;
return $this;
}
public function getCreatedAt(): DateTime
{
return $this->createdAt;
}
public function setCreatedAt(DateTime $createdAt): self
{
$this->createdAt = $createdAt;
return $this;
}
}
?>
Пример
Давайте запишем объект с текущей датой и временем:
<?php
namespace AppController;
use AppEntityArticle;
use DateTime;
use DoctrineORMEntityManagerInterface;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article/create', name: 'article_create')]
public function create(EntityManagerInterface $em): Response
{
$article = new Article();
$article->setTitle('article');
$article->setCreatedAt(new DateTime('2024-01-15 10:30:00'));
$em->persist($article);
$em->flush();
return new Response('created');
}
}
?>
Результат выполнения кода:
"created"
Пример
Давайте прочитаем значение поля и выведем его в формате
d.m.Y H:i:
<?php
namespace AppController;
use AppEntityArticle;
use DoctrineORMEntityManagerInterface;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article/show/{id}', name: 'article_show')]
public function show(int $id, EntityManagerInterface $em): Response
{
$article = $em->getRepository(Article::class)->find($id);
return new Response(
$article->getCreatedAt()->format('d.m.Y H:i')
);
}
}
?>
Результат выполнения кода:
"15.01.2024 10:30"
Смотрите также
-
поле
date,
которое хранит только дату без времени -
поле
time,
которое хранит только время без даты -
поле
datetime_immutable,
которое хранит неизменяемую дату и время -
поле
datetimetz,
которое хранит дату и время с часовым поясом