Ошибка Laravel Блокировка базы данных и разрыв транзакции

Кто-нибудь, помогите мне, пожалуйста! В моем проекте у меня есть транзакция с блокировкой записи:

namespace App\Console\Commands;

use Illuminate\Console\Command;

class Testing extends Command {
    protected function handling()
    {
        DB::beginTransaction();
        try {
            $posts = Posts::lockForUpdate()->find(1);

            //run step 1

            //run step 2

            //run step 3

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

в моем случае я вызываю это из команды, когда она работает:

php artisan test:run

...
running step 1
...
...
running step 2
..
..
Ctrl C

-> quit command.

Транзакция не фиксируется и блокирует запись навсегда.

Могу ли я совершить транзакцию при выходе из команды?

1 ответ

Если вы используете DB::beginTransaction(); тогда вам нужно совершить с помощью DB:commit(); как

DB::beginTransaction();
        try {
            $posts = Posts::lockForUpdate()->find(1);

            //run step 1

            //run step 2

            //run step 3
            DB::commit();

        } catch (\Exception $e) {
            DB::rollback();
        }
Другие вопросы по тегам