У меня есть JSON, как это:
"relatedCollection": [
{
id:1,
name: "something",
country: {
id:1
}
},
{
id:2,
name: "something 2",
country: {
id:1
}
}
]
Два связанных элемента, которые имеют общую страну, существующую в базе данных. Если я десериализую с помощью JMSserializer, он создаст два разных экземпляра объекта COUNTRY.
Когда вы применяете слияние с доктриной, правильно установите страну на «что-то», а не на «что-то 2». Таким образом, результат после сохранения:
"relatedCollection": [
{
id:1,
name: "something",
country: {
id:1
}
},
{
id:2,
name: "something 2",
country: null
}
]
Для Doctrine есть две разные сущности, называемые Country, которые отделены друг от друга. И учение прикрепляет первое и сохраняет его должным образом, но не второе.
Это происходит только с отношениями ManyToOne, когда вы объединяете коллекцию с одним и тем же идентификатором связанной сущности. Если вы сохраните страну 1 и страну 2, повторяющейся страны не будет, поэтому сохраните свойство.
Любое решение?