Я пытаюсь создать пользователей и заблокировать их номер экзамена на основе данных пользователя. Ниже приведен мой код,
Я использую транзакцию, чтобы проверить, доступны ли залы экзаменов, и отменить создание пользователя, если они не доступны.доступно,
Но откат также возвращает таблицы журналов, которые я веду, чтобы сохранить проблемы в распределении.
foreach($user_details as $ky=> $user) {
$this->em->getConnection()->beginTransaction();
try {
$this->em->persist($user);
$this->em->flush();
// this function checks if user details contains some condition
// for allocation of exam hall,
// like fees paid etc
$examHallAvailable = $this->checkHallavailable($user);
if($examHallAvailable) {
// updated exam details for user
$user->addExamHall($examHallAvailable);
$this->em->persist($user);
$this->em->flush();
$this->em->getConnection()->commit();
} else {
// i want to rollback creation of this user
// but continue other user creation
$this->em->getConnection()->rollBack();
}
// this adds a log of user add fail in another table
$this->updateLog($user);
}catch(Exception $ex) {
$this->em->getConnection()->rollBack();
}
Я получаю ошибку ниже, если уберу откат, если флага зала экзаменов нет
The optimistic lock on an entity failed.
Как продолжить цикл for, игнорируя ошибки пользователя, а также предотвратить откат обновления таблицы журнала в случае ошибки?