原生PHP烘贴、Laravel5.4、Yii2和ThinkPHP3.2中的事務實例

1撮胧、原生MySQL
// 開啟一個事務
mysql_query('START TRANSACTION'); 
$res1 = mysql_query(update table set money=money-1 where id =)
$res2 = mysql_query(update table set money=money+1 where id =)

if($res1 && $res2){
    // 成功之后提交
    mysql_query('COMMIT');     
}else{
    // 失敗之后回滾
    mysql_query('ROLLBACK');   
}
2、Laravel5.4
DB::beginTransaction();

try{
    // 業(yè)務處理和事務提交
    $data['name'] = 'test_name';
    $data['age']  = 25;
    $getGroupId   = DB::table('db_name.table_name1')->insertGetId($data);
    
    foreach($list_data as $v) {
        DB::table('db_name.table_name2')->insert([
            'group_id' => $getGroupId,
            'name'     => $v['name']
        ]);
    }
    // 成功之后提交
    DB::commit();
} catch (\Exception $exception) {
    // 接收異常處理并回滾和拋出異常
    DB::rollBack();
    throw new \Exception('操作失斃锨獭芹啥!');
}
3、Yii2
// 開啟事務
$transaction = Yii::$app->db->beginTransaction();
try {
    // 插入文章
    $res = $this->save();
    $data = [];
    foreach ($category_ids as $val) {
        $data[] = [$this->id, $val];
    }
    // 添加或更改分類文章時铺峭,先清空
    CategoryArticle::deleteAll('post_id = :post_id ', [':post_id' => $this->id]);

    // 批量插入分類文章表
    Yii::$app->db->createCommand()->batchInsert('feehi_category_article', ['post_id','category_id'], $data)->execute();
    // 提交
    $transaction->commit();
} catch (\Exception $e) {
    // 回滾
    $transaction->rollback();
    // 拋出異常
    throw $e;
}
4墓怀、ThinkPHP3.2
$modelRefund = D('Home/OrderRefund');
$modelDetail = D('Home/OrderDetail');

// 啟動事務
$modelRefund->startTrans(); 
$refund_status   = 1;
$updateRefundRes = $modelRefund->saveRefundStatus($where,$refund_status);
$status          =6;

foreach($order_detail as $k => $v){
    $where['id']     = $v;
    $updateDetailRes = $modelDetail->saveDetailCompleteStatus($where,$status);
}

if($updateRefundRes && $updateDetailRes){
    // 事務提交
    $modelRefund->commit(); 
    $this->success(C('OPERA_SUCCESS'));
}else{
    // 事務回滾
    $modelRefund->rollback();
    $this->error(C('OPERA_FAILD'));
}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市卫键,隨后出現的幾起案子傀履,更是在濱河造成了極大的恐慌,老刑警劉巖莉炉,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钓账,死亡現場離奇詭異,居然都是意外死亡絮宁,警方通過查閱死者的電腦和手機梆暮,發(fā)現死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绍昂,“玉大人啦粹,你說我怎么就攤上這事【接危” “怎么了唠椭?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長忍饰。 經常有香客問我贪嫂,道長,這世上最難降的妖魔是什么喘批? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任撩荣,我火速辦了婚禮,結果婚禮上饶深,老公的妹妹穿的比我還像新娘餐曹。我一直安慰自己,他們只是感情好敌厘,可當我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布台猴。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪饱狂。 梳的紋絲不亂的頭發(fā)上曹步,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天,我揣著相機與錄音休讳,去河邊找鬼讲婚。 笑死,一個胖子當著我的面吹牛俊柔,可吹牛的內容都是我干的筹麸。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼雏婶,長吁一口氣:“原來是場噩夢啊……” “哼物赶!你這毒婦竟也來了?” 一聲冷哼從身側響起留晚,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤酵紫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后错维,有當地人在樹林里發(fā)現了一具尸體奖地,經...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年需五,在試婚紗的時候發(fā)現自己被綠了鹉动。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡宏邮,死狀恐怖泽示,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情蜜氨,我是刑警寧澤械筛,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站飒炎,受9級特大地震影響埋哟,放射性物質發(fā)生泄漏。R本人自食惡果不足惜郎汪,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一赤赊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧煞赢,春花似錦抛计、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瘦陈。三九已至,卻和暖如春波俄,著一層夾襖步出監(jiān)牢的瞬間晨逝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工懦铺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留捉貌,地道東北人。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓冬念,卻偏偏與公主長得像昏翰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子刘急,可洞房花燭夜當晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內容