【问题标题】:Symfony/Doctrine - Denormalize UPDATE with relationsSymfony/Doctrine - 使用关系非规范化更新
【发布时间】:2023-03-07 13:30:01
【问题描述】:

我正在使用 Symfony 序列化程序对 JSON 数据进行非规范化并创建具有关系的实体。

例如:

$data = [
   'first' => 'John',
   'last' => 'Smith',
   'addresses' => [
       [
          'street' => 'Street',
          'city' => 'City',
          'state' => 'State'
       ]
   ]
];

$person = $this->serializer->denormalize($data, Person::class);

这很好用。但是,当我需要 更新 人时,我发送的是相同的数据,并设置了 object_to_populate 标志:

$data = [
   'first' => 'John',
   'last' => 'Smith',
   'addresses' => [
       [
          'street' => 'Street',
          'city' => 'City',
          'state' => 'State'
       ]
   ]
];

$entity = $this->serializer->denormalize($data, Person::class, ['object_to_populate' => $person]);

这会导致重复键错误(我为街道+城市+州设置了唯一键)。我怎样才能让 Doctrine UPDATE 关系,而不是尝试插入新关系?

【问题讨论】:

  • 不是因为地址实体的id为null,并且学说试图创建一个新的吗?
  • 我在数据中提供关系的@Id 字段(复合字段)。这没有帮助。
  • symfony.com/doc/current/components/… 您是否尝试过使用“DEEP_OBJECT_TO_POPULATE”选项?

标签: symfony doctrine


【解决方案1】:

有一个捆绑包可以让您的生活更轻松。它被称为JMSSerializerBundle。它开箱即用地处理教义关系。

【讨论】:

  • 我知道。但是您现在需要实现一些它没有的功能。一种方法——自己做,浪费时间。第二种方式——使用流行的解决方案。我更喜欢第二种方式。它不会让我浪费时间。因此,我制造的产品成本降低了,但质量相同甚至更好
猜你喜欢
  • 2014-12-31
  • 2020-07-09
  • 2012-06-23
  • 2020-04-06
  • 2020-05-21
  • 2022-10-25
  • 2015-09-08
  • 2017-05-02
  • 2016-01-31
相关资源
最近更新 更多