如何在 Symfony 的 API 平台响应中添加计算 属性?

How to add computed property in Symfony's API Platform response?

我需要计算一个值 属性 并将其添加到 API 平台响应中。

我有这个对象:

"project": {
    "@id": "/api/projects/1",
    "@type": "Projects",
    "id": 1,
    "name": "UI/UX",
    "beginDatetime": 1562662050,
    "maxHours": 8,
    "isActive": true,
  }

我需要这个对象:

"project": {
    "@id": "/api/projects/1",
    "@type": "Projects",
    "id": 1,
    "name": "UI/UX",
    "estEndDatetime": 1562662050 + (8*3600), // Autocalculated value
    "maxHours": 8,
    "isActive": true,
  }

我在 API 平台上使用 Symfony 4

您可以创建一个 getter 方法并向其添加 @Groups 注释。例如:

/**
 * @Groups({"your_group_name_here"})
 */
public function getEstEndDatetime(): DateTimeInterface
{
    return $this->getBeginDatetime()->modify('+ ' . ($this->getMaxHours() * 3600) . ' seconds');
}

请注意,执行此操作时,如果日期是可变日期,它将被更改。所以最好为 beginDateTime 属性.

使用不可变日期