Symfony Doctrine 对于数据库中的同一列有两个属性

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

这是一个示例实体

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 个字段
然后删除不需要的字段

如何做到这一点?

php symfony doctrine
1个回答
0
投票

理想情况下,您的 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 属性。然后您可以在某些版本中将其删除。

© www.soinside.com 2019 - 2024. All rights reserved.