我在我的项目中使用symfony / serializer,并且想返回子实体的唯一ID。例如我有订单和用户这两个实体。 当我获取订单并返回结果时,我只需要用户的ID。我已经通过使用@Groups做到了这一点,但是如果我有另一个需要所有细节的请求,那么将组添加到类中的每个单个属性上的工作量很大。
/**
* Order
*
* @ORM\Table(name="orders")
* @ORM\Entity
*/
class Order
{
/**
* @var int
*
* @ORM\Column(name="Id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var Users
* @ORM\ManyToOne(targetEntity="Users")
* @ORM\JoinColumn(name="UID", referencedColumnName="UID", nullable=false)
*/
private $user;
/**
* @return int
*/
public function getId(): int
{
return $this->id;
}
/**
* @return Users
*/
public function getUser(): Users
{
return $this->user;
}
/**
* @param Users $user
* @return Order
*/
public function setUser(Users $user): Order
{
$this->user = $user;
return $this;
}
}
/**
* Users
*
* @ORM\Table(name="users")
* @ORM\Entity
*/
class Users
{
/**
* @var int
*
* @ORM\Column(name="UID", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $UID;
/**
* @var string
*
* @ORM\Column(name="FirstName", type="encrypted", length=255, nullable=false)
*/
private $FirstName;
public function getUID(): ?int
{
return $this->UID;
}
public function getFirstName(): ?string
{
return $this->FirstName;
}
public function setFirstName(string $FirstName): self
{
$this->FirstName = $FirstName;
return $this;
}
}
答案 0 :(得分:1)
我创建了一个自定义的标准化器来执行此操作。不知道这是否是完美的解决方案,但对我有用。我发现为所有实体编写小组太麻烦了。
export default {
computed: {
BackToMulti() {
if (typeof this.$store.state.slideInfo[prevSlideNumber] === 'undefined') {
} else {
if (this.$store.state.slideInfo[prevSlideNumber].thisSlideMulti == 'true') {
return 'back-to-multi'
} else {}
}
}
}
};
答案 1 :(得分:0)
您可以序列化所有实体,而无需指定任何组
$serializer->serialize($order, 'json');
如果您要序列化一个孩子,则必须按照您说的做。在每个属性中设置要返回的组。
$serializer->serialize(
$order,
'json', ['groups' => 'order-user']
);