使用事務處理的話,需要資料庫引擎支援事務處理。比如最簡單的方式是使用mysql
的myisam
不支援事務處理,需要使用innodb
引擎。
transaction
方法運算元據庫事務,當閉包中的**發生異常會自動回滾,例如:
db::transaction(function () );
也可以手動控制事務,例如:
// 啟動事務
db::starttrans();
try catch (\exception $e)
注意在事務操作的時候,確保你的資料庫連線使用的是同乙個。
v5.1.13+
版本開始,可以支援mysql的xa
事務用於實現全域性(分布式)事務,你可以使用:
db::transactionxa(function () , [db::connect('db1'),db::connect('db2')]);
要確保你的資料表引擎為innodb
,並且開啟xa事務支援。
tp5 1 資料庫子查詢
首先構造子查詢sql,可以使用下面三種的方式來構建子查詢。fetchsql方法表示不進行查詢而只是返回構建的sql語句,並且不僅僅支援select,而是支援所有的curd查詢。subquery db table think user field id,name where id 10 fetchsq...
tp5 1 資料庫獲取器
db類也可以支援獲取器定義,例如 db name user withattr name function value,data select 上面的 查詢的資料集資料中的name欄位的值會統一進行小寫轉換。withattr方法可以多次呼叫,對多個字段定義獲取器。支援對json欄位定義獲取器,例如 u...
tp5 1 資料庫監聽SQL
如果開啟資料庫的除錯模式的話,你可以對資料庫執行的任何sql操作進行監聽,使用如下方法 db listen function sql,time,explain 預設如果沒有註冊任何監聽操作的話,這些sql執行會被根據不同的日誌型別記錄到日誌中。一旦設定了sql監聽,則sql日誌需要自己接管。v5.1...