tp5 1 資料庫事務操作

2021-10-24 21:21:53 字數 737 閱讀 8418

使用事務處理的話,需要資料庫引擎支援事務處理。比如mysqlmyisam不支援事務處理,需要使用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...