Я генерирую полный объект с ассоциациями с jms-сериализатором.
$obj = $serializer->deserialize($serializer->serialize($data, 'json'), 'array<App\Entity\Company>', 'json');
Генерируемый объект выглядит
Company {#521
-addresses: ArrayCollection {#557
-elements: array:2 [
0 => Address {#544
-id: null
-company: Company {#521}
-type: AddressType {#552
-id: null
-name: "Main Address"
}
}
1 => Address {#554
-id: null
-company: Company {#521}
-type: AddressType {#556
-id: null
-name: "Correspond Address"
}
}
]
}
}
Company
/**
* @ORM\OneToMany(targetEntity="App\Entity\Address", mappedBy="company", orphanRemoval=true, cascade={"persist","remove"})
* @JMS\Accessor(setter="setAddresses")
*/
private $addresses;
Адреса
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Company", inversedBy="addresses")
* @ORM\JoinColumn(nullable=false)
*
*/
private $company;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\AddressType", cascade={"persist","remove"})
* @ORM\JoinColumn(nullable=false)
*/
private $type;
AddressType
/**
* @ORM\Column(type="string", length=255, unique=true)
*/
private $name;
Теперь я пытаюсь сохранить этот объект и сбросить его в базу данных, ноКогда AddresType-> name существует, я получаю ошибку из db о существующем значении.Это нормальное поведение db, потому что имя ключа уникально, и доктрина пытается INSERT
it.
Как добавить отношение, если объект существует в базе данных, чтобы использовать его вместо попытки вставить?