Поле date
Поле date в Symfony используется в сущностях Doctrine для хранения даты без времени.
Оно преобразуется в тип DATE в базе данных. При работе с этим полем вы получаете объект
DateTimeInterface, в котором время всегда установлено на полночь. Поле удобно для хранения
дней рождения, дат событий или любых других данных, где важна только календарная дата.
Синтаксис
#[ORM\Column(type: 'date')]
private \DateTimeInterface $createdAt;
Пример
Давайте создадим сущность Article с полем publishedAt типа date:
<?php
namespace AppEntity;
use DoctrineORMMapping as ORM;
#[ORM\Entity]
class Article
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: 'integer')]
private int $id;
#[ORM\Column(type: 'string', length: 255)]
private string $title;
#[ORM\Column(type: 'date')]
private \DateTimeInterface $publishedAt;
public function getPublishedAt(): \DateTimeInterface
{
return $this->publishedAt;
}
public function setPublishedAt(\DateTimeInterface $publishedAt): self
{
$this->publishedAt = $publishedAt;
return $this;
}
}
?>
Пример
Давайте создадим объект и установим дату публикации:
<?php
namespace AppController;
use AppEntityArticle;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function create(): Response
{
$article = new Article();
$article->setTitle('hello');
$article->setPublishedAt(new \DateTime('2026-09-13'));
return new Response('Published at: ' . $article->getPublishedAt()->format('Y-m-d'));
}
}
?>
Результат выполнения кода:
"Published at: 2026-09-13"
Пример
Давайте посмотрим, как поле date отображается в форме Symfony:
<?php
namespace AppForm;
use AppEntityArticle;
use SymfonyComponentFormAbstractType;
use SymfonyComponentFormFormBuilderInterface;
use SymfonyComponentFormExtensionCoreTypeDateType;
use SymfonyComponentOptionsResolverOptionsResolver;
class ArticleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('title')
->add('publishedAt', DateType::class, [
'widget' => 'single_text',
]);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => Article::class,
]);
}
}
?>
Смотрите также
-
поле
datetime,
которое хранит дату и время -
поле
date_immutable,
которое хранит неизменяемую дату -
поле
time,
которое хранит только время -
поле
datetimetz,
которое хранит дату и время с часовым поясом