如何修改 Symfony 实体 Getter 方法以在 REST API 响应中返回仅日期值?

问题描述 投票:0回答:1

我目前正在开发一个基于 Symfony 的 REST API 应用程序,其中我遇到了与从实体字段返回的日期值的格式相关的特定要求。在我的实体中,我有一个名为

birthdate
的字段,定义为
@ORM\Column(type="date")
。当此字段包含在 API 响应中时,它会同时提供日期和时间部分,这与项目的规范不符。相反,我需要 API 响应来专门提供日期部分,而不需要任何时间信息。

下面是实体相关部分的精简版本,包括现有的

getBirthdate()
方法:

/**
 * @var \DateTime|null
 *
 * @ORM\Column(name="birthdate", type="date", nullable=true)
 */
private $birthdate;

// Existing getBirthdate() method
public function getBirthdate(): ?\DateTimeInterface
{
    return $this->birthdate;
}

// Additional properties and methods...

虽然我考虑过使用 DateTimeImmutable 对象来确保不变性,但我不确定 getBirthdate() 方法中的精确实现。因此,我寻求有关如何利用 DateTimeImmutable 有效修改此方法以专门返回日期部分而不包含任何时间组件的指导。

预先感谢您为有效应对这一挑战提供的帮助。

php symfony symfony-serializer
1个回答
0
投票

此处所示,您可以使用

Context
属性为您的字段设置特定的日期格式:

use Symfony\Component\Serializer\Annotation\Context;
use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;

#[Context([DateTimeNormalizer::FORMAT_KEY => 'Y-m-d'])]
private $birthdate;
© www.soinside.com 2019 - 2024. All rights reserved.