webman 的model->create mysql事務(wù)用不起嗎
假設(shè)下面的sql報錯
實(shí)際情況是 數(shù)據(jù)庫成功添加,而回滾沒有回滾起
1.4.3
php 7.4
mysql8.0 表是innodb
ORM 使用的laravel
laravelORM 在webman框架中config->database文件中是
// 默認(rèn)數(shù)據(jù)庫
'default' => 'mysql',
// 各種數(shù)據(jù)庫配置
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => '127.0.0.1',
'port' => 3306,
'database' => 'webman',
'username' => 'webman',
'password' => '',
'unix_socket' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
如果將默認(rèn)default 修改為 ‘XXX’
connections=>mysql[修改為XXX]
甚至設(shè)置第二個庫 ,第三個庫,這個時候在model里面會產(chǎn)生設(shè)置$connection指定庫的情況
如果你在使用
Db::beginTransaction();
打開事務(wù)的時候,事務(wù)是會找不到哪一個庫去打開事務(wù),也就會產(chǎn)生事務(wù)失效【程序會認(rèn)為,我找不到庫,直接跳過該行代碼】
故此需要在開啟事務(wù)的時候需要改變一下寫法
Db::connection('所操作的庫(database設(shè)置的名稱)')->beginTransaction();
Db::connection('xxx')->beginTransaction();
catch (Throwable $e)
catch (\PDOException $e)
試試?
public function index(Request $request): Response
{
Db::beginTransaction();
CollectionsWarehouse::query()->create([
'user_id'=>'111',
'serial_number'=>1,
'collection_id'=>1,
'gift_number'=>1,
'term_date'=>time(),
'update_time'=>time(),
]);
Db::rollBack();
return json(['11111']);
}
回滾失敗
model里定義了連接 protected $connection = 'mysql';,需要 Db::connection('mysql')->beginTransaction();