国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

請教大佬event 問題

liuqing

問題描述

我在一個(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
}
740 1 0
1個(gè)回答

walkor 打賞

可以使用,事務(wù)注意事項(xiàng)參考 http://wtbis.cn/doc/webman/others/transaction.html

  • liuqing 2024-03-07

    您好,感謝回復(fù),但是我按您給的文檔嘗試了不同的組合,依然無法生效.現(xiàn)給出我這邊測試的樣例,麻煩空了指教一下哈.

  • liuqing 2024-03-07

    測試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();
    }

  • liuqing 2024-03-07

    event內(nèi)容(var_dump顯示已正常進(jìn)入event)
    function testevent(): void
    {
    var_dump("test_event");
    User::insert([
    "abc" => 123
    ]);
    }

  • liuqing 2024-03-07

    class SysLog extends Model
    {
    protected $fillable = [
    'device_id',
    'log',
    ];
    }
    class User extends Model
    {
    protected $fillable = [
    'user_id',
    ];
    }

  • liuqing 2024-03-07

    預(yù)期結(jié)果是,能拿到event拋出的異常,同時(shí)事務(wù)回滾.

  • walkor 2024-03-07

    Event::emit() 不會拋出異常, 用Event::dispatch()

  • liuqing 2024-03-07

    感謝!已解決!

  • liuqing 2024-03-07

    應(yīng)該好好看看源碼的!

年代過于久遠(yuǎn),無法發(fā)表回答
??