Я не хочу откатывать некоторые вещи в транзакции БД - PullRequest
0 голосов
/ 04 марта 2019

То, что я хочу, это вставить запись в системные журналы, когда происходит ошибка и происходит откат других вещей.

Ниже в тексте находится главное в коде:

\ Log :: error ('Произошла ошибка: невозможно найти запись');

У меня есть следующий код:

public function read()
    {
        $id = 'some-id';
        try {
            DB::beginTransaction();

        $record = $this->getRecordsFromTableA($id);

        // some mor actions are here
        //
        //

        DB::commit();
    } catch (\Exception $e) {
        DB::rollBack();
    }
}

private function getRecordsFromTableA($id)
{
    try {
        DB::beginTransaction();

        $company = TableA::find($id);
        if (!$company) {
            throw new ApiOperationFailedException();
        }

        DB::commit();
    } catch (\Exception $e) {
        DB::rollBack();

        // i don't want to rollback this change and this will add record into system_logs
        \Log::error('Error occurs : unable to find record');

        throw new ApiOperationFailedException($e->getMessage());
    }
}

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Вы не вставляете в базу данных.Вы только запрашиваете базу данных.DB :: rollback () откатывает записи, вставленные в базу данных после DB :: beginTransaction ().Поскольку записи не были вставлены, нет записей для отката.Спасибо и удачи

0 голосов
/ 04 марта 2019

Просто удалите функцию фиксации и отката из функции чтения следующим образом.

public function read()
    {
DB::beginTransaction();
        $id = 'some-id';
        try {
        $record = $this->getRecordsFromTableA($id);
 DB::commit();
    } catch (\Exception $e) {
 DB::rollBack();
 // i don't want to rollback this change and this will add record into system_logs
        \Log::error('Error occurs : unable to find record');

        throw new ApiOperationFailedException($e->getMessage());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...