【发布时间】: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”选项?