精华内容
下载资源
问答
  • Laravel事务处理

    2020-05-14 12:32:48
    Laravel事务处理事务处理laravel事务处理的两种常用方法方法一:方法二:我用的时候,需要一个while循环,所以就这样:小知识 事务处理 对数据库进行多次操作,要么都成功,要么都回滚,就用到了事务处理. 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循环里面,当循环某个环节出错时,抛出异常后继续循环.

    展开全文
  • laravel 事务处理

    2020-09-24 13:02:29
    数据库事务处理# 你可以使用transaction方法,去执行一组数据库事务处理的操作: DB::transaction(function() { DB::table(‘users‘)->update([‘votes‘ => 1]); DB::table(‘posts‘)->delete(); ...

    laravel处理事务,Eloquent ORM是不支持的,必须使用DB::  

     

    数据库事务处理#

    你可以使用 transaction 方法,去执行一组数据库事务处理的操作:

    DB::transaction(function()
    {
        DB::table(‘users‘)->update([‘votes‘ => 1]);
    
        DB::table(‘posts‘)->delete();
    });

    注意: 在 transaction 闭包若抛出任何异常会导致事务自动回滚。

    有时候你可能需要自己开始一个事务:

    DB::beginTransaction();

    你可以通过 rollback 的方法回滚事务:

    DB::rollback();

    最后,你可以通过 commit 的方法提交事务:

    DB::commit();

    获取连接#

    若要使用多个连接,可以通过 DB::connection 方法取用:

    $users = DB::connection(‘foo‘)->select(...);

    你也可以取用原始底层的 PDO 实例:

    $pdo = DB::connection()->getPdo();

    有时候你可能需要重新连接到特定的数据库:

    DB::reconnect(‘foo‘);

    如果你因为超过了底层 PDO 实例的 max_connections 的限制,需要关闭特定的数据库连接,可以通过 disconnect 方法:

    DB::disconnect(‘foo‘);

    查找日志记录#

    Laravel 可以在内存里访问这次请求中所有的查找语句。然而在有些例子下要注意,比如一次添加 大量的数据,可能会导致应用程序耗损过多内存。 如果要启用日志,可以使用 enableQueryLog 方法:

    DB::connection()->enableQueryLog();

    要得到执行过的查找纪录数组,你可以使用 getQueryLog 方法:

    $queries = DB::getQueryLog();

    官方手册说明:https://learnku.com/docs/laravel/5.6/database/1397#database-transactions

    展开全文
  • laravel 事务处理逻辑

    2019-12-11 18:05:32
    laravel事务处理逻辑

    前言:
    在操作数据库中,实现一个功能时有时候会多次操作数据库,
    在多次操作数据库时,就会有可能出现其中一条sql语句执行成功,而另一条sql语句执行失败。
    这样的话就会出现很严重的问题,所以可以用MySQL的事务处理来解决这个问题。

    !!:在处理多表操作的时候一般是需要用到事务处理的!

    //1、开启事务
    DB::beginTransaction();
    try{
    	//2、执行成功时提交事务
    	DB::commit();
    }catch(\Exception $exception){
    	//3、执行成失败时回滚
    	DB::rollBack();
    }
    

    注意:
    其中要注意一点的是,catch里面的抛出异常,Exception前面要加上一个‘\’,不然的话在框架里面他会找不到这个类,然后就不会抛出异常。框架就会直接报错,起不到事务的作用。

    //用户注册demo 
    <?php
    namespace App\Http\Controllers\Api;
    
    use App\Http\Controllers\Controller;
    use Illuminate\Support\Facades\DB;
    use Illuminate\Support\Facades\Hash;
    
    class LoginController extends Controller
    {
    	public function register(Request $request)
    	{
    			$rules = [
    	            'mobile' => 'required',//laravel-sms
    	            'password' => 'required|confirmed|min:8',
    	        ];
    	        
            $msg = [
                'mobile.required' => '请输入手机号码',
                'password.required' => '请输入密码',
            ];
            
            $validator = Validator::make($request->all(), $rules, $msg);
            if ($validator->fails()) {
                $this->throwValidatorException($validator);
            }
            
            $mobile = $request->input('mobile');
            $password = $request->input('password');
            
            //手机号码查重
            $user = User::where('mobile', $mobile)->first();
            if ($user) {
                return $this->errorWithInfo('手机号码已存在');
            }
            
            DB::beginTransaction();
            try{
            	$user = User::create([
                    'mobile' => $mobile,
                    'password' => Hash::make($password),
                ]);
                
    			//用户仓库,创建用户的时候 赋予用户道具 土地等属性(在仓库表中体现)
                UserTool::create([
                    'uid' => $user->id,
                    'tool_id' => Daoju::TOOL_SEEDER,
                    'pay_time' => Carbon::now()->timestamp,
                    'nums' => 1,
                ]);
                DB::table('oauth_access_tokens')->where('user_id', $user->id)->update(['revoked' => 1]);
                DB::commit();
                return $this->proxy($mobile, $password);
                
            } catch (\Exception $exception) {
            
                DB::rollBack();
                return $this->errorWithInfo($exception->getMessage());
            }
    	}
    	
    }
    
    展开全文
  • 传递参数使用匿名函数use来传递参数,参考( ...); 返回添加数据的主键可以用 $aid->id 方式返回;...Laravel 事务处理文档  https://laravel-china.org/docs/laravel/5.6/database/1397#09ddab
    
    传递参数使用匿名函数use来传递参数,参考(http://www.jicker.cn/5846.html);
    
    返回添加数据的主键可以用  $aid->id 方式返回;
    
    public function create(array $data)
    {
        DB::transaction(function () use ($data) {
            $mid = parent::create($data);
            $aid = $this->Access->create(array('type' => 1));
            DB::table('access_relational_menu')->insert(array('aid' => $aid->id, 'mid' => $mid->id));
        });
    }

    Laravel 事务处理文档 https://laravel-china.org/docs/laravel/5.6/database/1397#09ddab

    展开全文
  • laravel事务控制处理

    万次阅读 2018-12-03 14:21:24
    在我们的业务处理中,有时候会遇到多个SQL语句的操作,并且他们是分开执行的,有时候他们是存在互相关联的,比如A表新添了一条记录,B表要对该记录进行关联,如果我们不对他们进行事务的控制,将有可能在突发的情况下...
  • Laravel 分布式事务处理

    千次阅读 2020-05-24 16:31:43
    TCC 是现在非常流行分布式处理模式,属于柔性事务。柔性事务,基于分布式领域 BASE 理论,它是在 CAP 理论(一致性、可用性、分区容忍性)的基础之上的延伸,包括:基本可用(Basically Available)、柔性状态(Soft...
  • laravel事务

    2017-10-17 09:49:29
    laravel事务问题,开启事务后,执行的内容中间某一项错误,抛出的是事务的错误而不是某一项小错误,如果想抛出小错误,怎么处理呢?
  • laravel 事务与锁

    千次阅读 2016-10-11 20:57:12
    关于laravel 事务与锁机制的见解。
  • laravel 事务的使用

    2019-01-13 19:46:18
    laravel5如何使用事务 想要在一个数据库事务中运行一连串操作,可以使用DB门面的transaction方法,如果事务闭包中抛出异常,事务将会自动回滚。如果闭包执行成功,事务将会自动提交。使用transaction方法时不需要...
  • laravel事务回滚失败

    2019-09-28 01:22:54
    //开启事务  DB::rollback();//回滚  DB::commit();//提交 2 查看MySQL数据表是否为InnoDB表 3 查看开启事务的是否为对应数据库 DB::connection('对应的数据库名')->beginTransaction(); DB::...
  • Laravel中的事务处理

    2019-01-12 19:28:00
    Laravel中的事务可以用 DB 门面的 transaction 方法在一个事务里执行一系列操作。如果事务闭包里抛出异常,那么事务就会自动回滚。如果闭包执行成功,那么事务就会自动提交。使用 transaction 方法就无需手动回滚...
  • Laravel框架的事务处理

    2019-01-13 19:01:04
    数据库事务 想要在一个数据库事务中运行一连串操作,可以使用 DB 门面的 transaction 方法,使用 transaction 方法时不需要手动回滚或提交:如果事务闭包中抛出异常,事务将会自动回滚;如果闭包执行成功,事务将会...
  • laravel 如何处理异步任务

    千次阅读 2019-05-07 18:53:14
    laravel如何处理异步任务
  • laravel中的事务处理

    千次阅读 2018-01-23 15:10:07
    你可以用 DB 门面的 transaction 方法在一个事务里执行一系列操作。如果事务闭包里抛出异常,那么事务就会自动回滚。如果闭包执行成功,那么事务就会自动提交。使用 transaction 方法就无需手动回滚或者提交...
  • But when I tried this on my Laravel Model: public static function addNew($request, $department_id) { $result = array(); $now = Carbon::now(); DB::beginTransaction(); //Checking for existing Order to ...
  • laravel执行事务

    2020-12-18 17:39:39
    //开启事务 DB::beginTransaction(); try{ //一些数据库操作 Users::delete($id); DB::commit();//提交 return '操作成功'; }catch (\Exception $e) { DB::rollBack();//回滚 return ‘操作失败'; ...
  • 整了半天没明白事务为什么会失败!最后还是解决掉了,记录一下,以防忘记,可以参考参考!!! public function index() { $UserModel = new User(); DB::beginTransaction(); //开启事务 $o = $UserModel-&gt;...
  • laravel想要在一个数据库事务中运行一连串操作,可以使用DB门面的transaction方法,如果事务闭包中抛出异常,事务将会自动回滚。如果闭包执行成功,事务将会自动提交。使用transaction方法时不需要担心手动回滚或...
  • laravel框架中的MySQL事务处理 阿星小栈 laravel框架中的MySQL事务处理 在操作数据库中,实现一个功能时有时候会多次操作数据库,在多次操作数据库时,就会有可能出现其中一条sql语句执行成功,而另一条sql...
  • Laravel添加事务

    千次阅读 2016-01-12 16:26:41
    1、事务方法: //添加事务 DB::connection('go_gold')->beginTransaction(); //初始化go_gold数据库的事务 DB::connection('go_member')->beginTransaction(); //初始化go_member数据库的事务 $_save_success = ...
  • 异常处理是编程中十分重要但也最容易被人忽视的语言特性,它为开发者提供了处理程序运行时错误的机制,对于程序设计来说正确的异常处理能够防止泄露程序自身细节给用户,给开发者提供完整的错误回溯堆...
  • laravel5 事务的用法

    千次阅读 2018-11-24 18:39:27
    事务用法:首先介绍laravel5中的2中使用方式。 事务用法说明: 1、第一种方式:事务闭包 use Illuminate\Support\Facades\DB;  DB::transaction(function () {  //这里面写逻辑 }); 2、第二种方式:常规方式 ...
  • Laravel】数据库事务

    千次阅读 2017-12-20 21:35:44
    最近公司项目集成了一个支付的模块。由于网络世界是不确定的。说不定哪个操作就出了问题。为了保证数据的正确性我们不得不考虑使用数据库事务这一特性。本做一个简单的Laravel数据库事务的介绍。
  • laravel跨库事务

    2019-10-28 17:07:39
    Laravel 下的跨库事务操作是基于连接的 当执行 DB::beginTransaction(); 的时候 其实是和默认的数据库配置建立了连接 后面的操作 commit 或者 rollback 都是操作的这个默认数据库 如果在这中间操作了其他的数据库 对...
  • <?php // 开启事务 DB::beginTransaction(); // 数据处理 try { $user = new User; $user->username = $username; $user->nickname = '测试昵称'; $u...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,310
精华内容 524
关键字:

laravel事务处理