如何使用Symfony序列化器序列化为具有一对多关系的xml对象

问题描述

我的广告实体如下所示:

class Ad
{
    private string $adId;

    private ?string $platform;

    private ?Collection $insights;

    public function __construct(string $adId,string $platform)
    {
        $this->adId = $adId;
        $this->platform = $platform;
        $this->insights = new ArrayCollection();
    }

.   getters
.   setters
.
}

我的 Insight 实体如下所示:

class Insight
{
    private int $id;

    private ?string $adId;

    private string $adClicks;

    private Datetime $date;

    private ?Ad $ad;

    public function __construct(string $adId,string $adClicks,DateTime $date,?Ad $ad)
    {
        $this->adId = $adId;
        $this->adClicks = $adClicks;
        $this->date = $date
        $this->ad = $ad;
    }
.   getters
.   setters
.
}

Ad 和 Insight 之间存在一对多关系。 一个广告有很多洞察

现在我尝试使用 Symfony 序列化器来序列化为这种 XML 格式:

<?xml version="1.0" encoding="UTF-8"?>
<ads updated="2021-04-26 09:55:43">
    <ad adId="123">
        <platform>platform</platform>
        <insights>
            <insight date="2021-04-18">
                <adClicks>111.11</adClicks>
            </insight>
            <insight date="2021-04-17">
                <adClicks>31.11</adClicks>
            </insight>
            <insight date="2021-04-16">
                <adClicks>431.11</adClicks>
            </insight>
        </insights>
    </ad>
</ads>

我在控制器中尝试过这样的事情:

final class AdsController extends AbstractController
{
    private SerializerInterface $serializer;

    private normalizerInterface $normalizer;

    public function __construct(SerializerInterface $serializer,normalizerInterface $normalizer)
    {
        $this->queryBus = $queryBus;
        $this->commandBus = $commandBus;
        $this->serializer = $serializer;
        $this->normalizer = $normalizer;
    }

    public function __invoke(Request $request): Response
    {
        $ads = $this->em->findAll();
        $res = $this->serializer->serialize($ads,'xml'));

        return $res;
    }
}

但我收到以下错误

A circular reference has been detected when serializing the object of class "Ad" (configured limit: 1).

我的问题是如何将具有一对多关系的 Ad 对象转换为我上面附加的格式的见解?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)