按组序列化可嵌入项失败



当我调用

时,我试图使用组来仅序列化MyEntity的部分:
$myEntities = $repository->findAll();
return $this->json([
'myEntities' => $myEntities
], 200, [], ['groups' => 'main']);

在我的一个控制器的路由(以避免循环引用错误)。但是我在使用可嵌入内容时遇到了麻烦。

要简单了解情况,请参见:

/**
* @ORMEntity
*/
class MyEntity
{
/**
* @ORMEmbedded(class="AppEntityUtilMyTestEmbeddable")
* @Groups("main")
*/
protected MyTestEmbeddable $test;
}

/**
* @ORMEmbeddable
*/
class MyTestEmbeddable
{
/**
* @ORMColumn(type="string", nullable=false)
*/
private string $text;
/**
* @ORMColumn(type="string", nullable=false)
*/
private string $text2;
}

但是结果只包含MyEntity::$test属性的空数组。

我希望MyTestEmbeddable::$textandMyTestEmbeddable::$text2 '也被序列化。

我需要做什么才能使它像我期望的那样工作?

您不仅需要为MyEntity::$test声明序列化组,还需要为您希望成为序列化组一部分的MyTestEmbeddable的各个属性声明序列化组。

例如:

/**
* @ORMColumn(type="string", nullable=false)
* @Groups("main")
*/
private ?string $text;

这样,你可以选择嵌入实体的哪些单独的属性将被序列化。

最新更新