这是一个示例实体
use ApiPlatform\Metadata\ApiResource;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
#[ORM\Table(name: 'user')]
#[ApiResource(
operations: [new GetCollection()],
normalizationContext: [
'groups' => [
'user:id',
'user:score',
'user:user_score',
],
]
)]
class User
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(name: 'ID_USER', type: 'integer')]
#[Groups(groups: ['user:id'])]
private int $id;
#[ORM\Column(name: 'SCORE', type: 'integer')]
#[Groups(groups: ['user:score'])]
private int $score;
#[ORM\Column(name: 'SCORE', type: 'integer')]
#[Groups(groups: ['user:user_score'])]
private int $userScore;
// getters / setters
}
我想贬值 $score / user:score 并将其从 api 端点中删除
但不能一步完成此操作,我需要使用相同的值执行前 2 个字段
然后删除不需要的字段
如何做到这一点?
理想情况下,您的 API 公开了 getter 和 setter, 也许序列化器无论如何都会使用它们
因此,要弃用,您可以修改 getter 和 setter,例如:
/**
* @deprecated in 2.x and removed in 3.x.
* Use \Foo\Bar::getUserScore() instead.
*/
public function getScore(){
return $this->getUserScore();
}
因此任何对
getScore
的调用都将返回 userScore 属性。然后您可以在某些版本中将其删除。