当我调用
时,我试图使用组来仅序列化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::$textand
MyTestEmbeddable::$text2 '也被序列化。
我需要做什么才能使它像我期望的那样工作?
您不仅需要为MyEntity::$test
声明序列化组,还需要为您希望成为序列化组一部分的MyTestEmbeddable
的各个属性声明序列化组。
例如:
/**
* @ORMColumn(type="string", nullable=false)
* @Groups("main")
*/
private ?string $text;
这样,你可以选择嵌入实体的哪些单独的属性将被序列化。