原生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)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容