У меня есть объект, у которого есть свойство, которое указывает на другой объект того же типа, например duplicatedFrom
для объекта, который помечен как дубликат существующего объекта.
Класс объекта является чем-то вроде this:
class Foo
{
private string $id;
private string $name;
private string $content;
private ?Foo duplicatedFrom;
}
Мне бы хотелось, чтобы возвращаемый результат был примерно таким:
{
"@id": "/api/foo/2",
"@type": "Foo",
"name": "bar",
"content": "abce",
"duplicatedFrom": "/api/foo/1"
}
Но вместо этого я получаю:
{
"@id": "/api/foo/2",
"@type": "Foo",
"name": "bar",
"content": "abce",
"duplicatedFrom": {
"@id": "/api/foo/1",
"@type": "Foo",
"name": "bar",
"content": "abce",
"duplicatedFrom": null
}
}
Ссылка на сущность от Foo::duplicatedFrom
полностью сериализован, где я хотел бы добавить его только со значением id, а не со всей сущностью.
Я играл с конфигурацией сериализатора, установив max-depth
для duplicatedFrom
либо 0
или 1
, но результаты совпадают.
Применяемая группа сериализатора:
<serializer xmlns="http://symfony.com/schema/dic/serializer-mapping">
<class name="Foo">
<!-- rest of the declaration omitted -->
<!-- tried with max-depth 1 and 0 -->
<attribute name="duplicatedFrom" max-depth="1">
<group>foo_item</group>
<group>foo_collection</group>
</attribute>
</class>
</serializer>
Конфигурация ресурса API:
<resources xmlns="https://api-platform.com/schema/metadata">
<resource class="Foo">
<attribute name="normalization_context">
<attribute name="groups">
<attribute>foo_collection</attribute>
</attribute>
</attribute>
</resource>
Как мне это сделать sh? 1028 *