Проблема цикла транзакций доктрины Symfony - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь создать пользователей и заблокировать их номер экзамена на основе данных пользователя. Ниже приведен мой код,

Я использую транзакцию, чтобы проверить, доступны ли залы экзаменов, и отменить создание пользователя, если они не доступны.доступно,

Но откат также возвращает таблицы журналов, которые я веду, чтобы сохранить проблемы в распределении.

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, игнорируя ошибки пользователя, а также предотвратить откат обновления таблицы журнала в случае ошибки?

...