请帮助我! 在我的项目中,我有锁记录交易:
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.
交易未提交并永久锁定记录。
我可以在命令强制退出时提交事务吗?
答案 0 :(得分:0)
如果您使用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();
}