laravel删除关联表信息提交事务的使用

/*
* 删除
*/
public function destroy($id)
{
// 开启事务
DB::beginTransaction();
$res = $this->users->del($id);
if(!$res){
// 用户删除不成功,则回滚
DB::rollBack();
return response()->json(['status' => 1, 'msg' => '用户表删除失败,请重试']);
}
// 继续查找有没有加班记录 注意此处取值必须使用first() 不可以使用get(); 判断的时候,判断j结果是不是null
$res = \App\Overtime::where('user_id',$id)->first();
if($res != null){
// 如果有请假,删除加班
$res2 = \App\Overtime::where('user_id',$id)->delete();
if(!$res2){
DB::rollBack();
return response()->json(['status' => 1, 'msg' => '加班信息删除失败,请重试']);
}

        }
//        继续找有没有请假记录
        $res = \App\Leave::where('user_id',$id)->first();
        if($res != null ){
            $res2 = \App\Leave::where('user_id',$id)->delete();
            if(!$res2){
                DB::rollBack();
                return response()->json(['status' => 1, 'msg' => '请假信息删除失败,请重试']);
            }
        }

//        继续找有没有薪资规则记录
        $res = \App\StaffSalarys::where('user_id',$id)->first();
        if($res != null){
            $res2 = \App\StaffSalarys::where('user_id',$id)->delete();
            if(!$res2){
                DB::rollBack();
                return response()->json(['status' => 1, 'msg' => '薪资规则信息删除失败,请重试']);
            }
        }
//        所有的判断都结束,走到这一步,提交事务
            DB::commit();
            return response()->json(['status' => 0, 'msg' => '删除成功']);
    }

// 继续查找有没有加班记录 注意此处取值必须使用first() 不可以使用get(); 判断的时候,判断j结果是不是null $res = \App\Overtime::where('user_id',$id)->first(); if($res != null){

你可能感兴趣的:(laravel删除关联表信息提交事务的使用)