PHP–ThinkPHP6.0 事務操作
博客說明
文章所涉及的資料來自互聯網整理和個人總結,意在於個人學習和經驗彙總,如有什麼地方侵權,請聯繫本人刪除,謝謝!
說明
都是先學功能,後面使勁的完善
看雲文檔地址
https://www.kancloud.cn/manual/thinkphp6_0/1037573
前提條件
使用事務處理的話,需要數據庫引擎支持事務處理。比如 MySQL
的 MyISAM
不支持事務處理,需要使用 InnoDB
引擎
放這兩張圖片是因爲要體現一下兩種引擎
事務操作
使用 transaction
方法操作數據庫事務,當閉包中的代碼發生異常會自動回滾
//Db
Db::transaction(function () {
Db::table('think_user')->find(1);
Db::table('think_user')->delete(1);
});
//model
Db::transaction(function () {
User::where('id',$user_id)->find();
User::where('id',$user_id)->delete();
});
手動控制事務
// Db啓動事務
Db::startTrans();
try {
Db::table('think_user')->find(1);
Db::table('think_user')->delete(1);
// 提交事務
Db::commit();
} catch (\Exception $e) {
// 回滾事務
Db::rollback();
}
// model啓動事務
Db::startTrans();
try {
User::where('id',$user_id)->find();
User::where('id',$user_id)->delete();
// 提交事務
Db::commit();
} catch (\Exception $e) {
// 回滾事務
Db::rollback();
}
感謝
ThinkPHP
以及勤勞的自己