Есть, значит, такой код :
class Payout
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private ?int $id;
/**
* @ORM\OneToOne(targetEntity="PayoutDetails", mappedBy="payout", cascade={"persist", "merge"})
*/
private ?PayoutDetails $details;
}
abstract class PayoutDetails
{
/**
* @ORM\Id()
* @ORM\OneToOne(targetEntity="Payout")
*/
private Payout $payout;
}
Связь пейаута и деталей - один к одному, своего id у деталей нет. Когда я первый раз сохраняю пейаут - детали сохраняются каскадно и тут все хорошо, но как только я пытаюсь заменить уже записанный в базу инстанс PayoutDetails на другой инстанс этого же класса, то доктрина пытается делать инсерт и естественно я получаю ошибку ограничения внешнего ключа "Ключ "(payout_id)=(31)" уже существует". А как бы ему указать, что делать надо именно update?
На всякий случай уточню, что перепривязки деталей к новому пейауту не происходит, по сути мне нужно обновить ту же запись в таблице, просто используя другой инстанс сущности с тем же id.