Laravel databaseのトランザクション関数

2128 ワード

Laravelのトランザクションは次のように使用されます.
DB::connection('gvideo')->transaction(function () use ($user_id, $video_id, $action_id) {
                $this->create(array('user_id' => $user_id, 'video_id' => $video_id, 'action_id' => $action_id));
                
                if (UserTotalActionRecord::where('user_id', $user_id)->where('action_id', $action_id)->where('record_date', date("Y-m-d"))->first()) {
                    UserTotalActionRecord::where('user_id', $user_id)->where('action_id', $action_id)->where('record_date', date("Y-m-d"))->increment('action_times');
                } else {
                    UserTotalActionRecord::create(array('user_id' => $user_id, 'action_id' => $action_id, 'record_date' => date("Y-m-d")));
                }
            });

以前に使用した場合、匿名関数はuseで外部変数を参照していないことがわかり、関数内で使用するとエラーが発生するため、匿名関数の使用に注意する必要があります.