我在一個(gè)function 里寫了 Db::beginTransaction(); 可否在commit之前使用event? 我這樣嘗試去做測試,但是遇到一個(gè)問題,就是如果我event執(zhí)行失敗, 初始的function無法進(jìn)行rollback. 請問這個(gè)可以有什么好的解決辦法嗎?
Db::beginTransaction();
try{
xxxx;
xxxx;
event("訂單處理事件");
}catch(Exception $e){
Db::rollback;
xxxx
}
可以使用,事務(wù)注意事項(xiàng)參考 http://wtbis.cn/doc/webman/others/transaction.html
測試function
Db::beginTransaction();
try{
SysLog::insert([
"device_id" => "123",
"log" => "測試"
]);
Event::emit('testevent', [], true);
Db::commit();
}catch (\Throwable $exception) {
var_dump($exception->getMessage());
Db::rollBack();
}
event內(nèi)容(var_dump顯示已正常進(jìn)入event)
function testevent(): void
{
var_dump("test_event");
User::insert([
"abc" => 123
]);
}
class SysLog extends Model
{
protected $fillable = [
'device_id',
'log',
];
}
class User extends Model
{
protected $fillable = [
'user_id',
];
}