У меня странная проблема: две из моих сущностей сохраняются дважды случайным образом.Позвольте мне объяснить: у меня есть Entity Project, который имеет отношение ManyToOne к Transaction.Проект также имеет отношения ManyToOne с клиентом.Вот код, вызывающий проблему:
$transaction = new TransactionBuyer();
if ($fees) {
$option = new TransactionOptions();
//setters
$em->persist($option);
}
$warrantyOption = new TransactionOptions();
//other setters
$deposit = new Deposit();
// setters
$transaction->setCustomer($customer);
$transaction->setAd($ad);
$transaction->setDeliveryMode($deliveryMode);
$transaction->setDeposit($deposit);
$ad->setStatus(AdStatus::AD_PENDING_SELL);
$project = new CustomerProjectBuy();
$project->setCustomer($customer);
$project->setTransactionBuyer($transaction);
$project->setTransactionSeller($transactionSeller);
$project->setPromoCode($promoCode);
$ad->getCar()->addCustomerProject($project);
$transactionSeller->addProject($project);
foreach ($transactionSeller->getProjects() as $project) {
if ($project instanceof CustomerProjectSell) {
$project->setTransactionBuyer($transaction);
}
}
$customer->addProject($project);
$transaction->addProject($project);
$customer->setTermsOfSaleAccepted(true);
$projectSell = $em->getRepository('CoreBundle:CustomerProjectSell')->findOneBy(['car' => $ad->getCar(), 'transactionSeller' => $transactionSeller]);
$projectSell->setTransactionBuyer($transaction);
$em->persist($deposit);
$em->persist($transaction);
$em->persist($warrantyOption);
$em->persist($project);
$em->flush();
Транзакция и проект выполнялись дважды несколько раз (например, один раз из 3).Два объекта содержат одинаковые данные.Я не могу воспроизвести проблему в моем местном окружении.И недавно у меня появилась эта проблема на производстве:
An exception occurred while executing 'UPDATE Ad SET `Status` = ?, LastUpdateDate = ? WHERE id = ?' with params [5, "2019-02-04 12:01:10", 6098]:
SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction
Это исключение в момент сброса.Это может быть связано?