如何在 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
属性.
使用不可变日期
我需要计算一个值 属性 并将其添加到 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
属性.