Laravel事务处理

事务处理

对数据库进行多次操作,要么都成功,要么都回滚,就用到了事务处理.

laravel事务处理的两种常用方法

方法一:

DB::beginTransaction();//开启事务,不需要引入文件;
try {
            $sql_one = DB::table('xxxxxx')->insert($row_one);//转移
            $sql_two = DB::table('yyyyyy')->where('message_id', $aaa)->delete();//删除

            DB::commit();

}catch (\Exception $e){
    DB::rollBack();
    throw $e;
}

方法二:

DB::beginTransaction();//开启事务,不需要引入文件;
  $sql_one = DB::table('xxxxxx')->insert($row_one);//转移
  $sql_two = DB::table('yyyyyy')->where('message_id', $aaa)->delete();//删除

 if ($sql_two && $sql_two) {
                DB::commit();
				return 1;
            } else {
                DB::rollBack();
				return 0;
            }

我用的时候,需要一个while循环,所以就这样:

DB::beginTransaction();//开启事务,不需要引入文件;
try {
    while (true) { // 这里看上去这个循环会一直执行
        $row_one = DB::table('yyyyyy')->where('release_date', '<', $mothTime)->first();
        if ($row_one) {
            $row_one = (array)$row_one;
            $aaa = $row_one['message_id'];
            $row_two = DB::table('xxxxxx')->insert($row_one);//转移
            $row_three = DB::table('yyyyyy')->where('message_id', $aaa)->delete();//删除
             DB::commit();
        }else {
            break;
        }
    }

}catch (\Exception $e){
    DB::rollBack();
}

小知识

while循环放在try里面,当循环某个环节出错时,直接抛出异常停止循环
try放在while循环里面,当循环某个环节出错时,抛出异常后继续循环.

原创文章 7 获赞 7 访问量 992

猜你喜欢

转载自blog.csdn.net/The_My_World/article/details/106117426