使用事務處理的話,需要數據庫引擎支持事務處理。比如 MySQL 的 MyISAM 不支持事務處理,需要使用 InnoDB 引擎。
使用 transaction 方法操作數據庫事務,當發生異常會自動回滾,例如:
一、自動控制事務處理
Db::transaction(function(){ Db::table('think_user')->find(1); Db::table('think_user')->delete(1); });
二、手動控制事務處理
// 啟動事務 Db::startTrans(); try{ Db::table('think_user')->find(1); Db::table('think_user')->delete(1); // 提交事務 Db::commit(); } catch (\Exception $e) { // 回滾事務 Db::rollback(); }
三、如果開啟數據庫的調試模式的話,你可以對數據庫執行的任何SQL操作進行監聽,使用如下方法:
Db::listen(function($sql, $time, $explain){ // 記錄SQL echo $sql. ' ['.$time.'s]'; // 查看性能分析結果 dump($explain); });
四、可以直接使用數組的方式操作數據集對象,例如:
// 獲取數據集 $users = Db::name('user')->select(); // 直接操作第一個元素 $item = $users[0]; // 獲取數據集記錄數 $count = count($users); // 遍歷數據集 foreach($users as $user){ echo $user['name']; echo $user['id']; }
1、如果要判斷數據集是否為空,不能直接使用empty判斷,而必須使用數據集對象的isEmpty方法判斷,例如:
$users = Db::name('user')->select(); if($users->isEmpty()){ echo '數據集為空'; }

