如何处理Laravel中的事务

时间:2017-01-16 15:58:28

标签: php laravel

我使用的是Laravel 5.2.31版。我在CircuitController和CircuitService中构造了代码,以便重用一些函数,比如在Java中应该做的事情。

  1. CircuitController:

    public function pickingAtCarton(Request $request){ $circuitService = new CircuitService(); // Do some business here $circuitService->completeCircuit($circuit_id); $circuitService->completeBoxAtCircuit($circuit_id); }

  2. 2.CircuitService:

    public function completeCircuit($circuit_id, $user){
        $circuit = Circuit::find($circuit_id);
        $circuit->status = Config::get('constants.status.tour.completed');
        $circuit->pick_by = Auth::user();
        $circuit->complete_time=Carbon::now();
        //update complete time later.
        $circuit->save();
    }
    
    public function completeBoxAtCircuit($circuit_id, $user){
            DB::table('box_at_circuit')
                ->where('circuit_id', $circuit_id)
                ->update(['status'=> Config::get('constants.status.tour.completed')]);
        }
    

    如何在交易中使这两种方法有效?

    根据@LuísFerreira

    的帮助编辑了解决方案

    CircuitController中的代码需要更新如下:

    public function pickingAtCarton(Request $request) {
       DB::transaction(function ($request) use ($request) {
          $circuitService = new CircuitService();
          // Do some business here
          $circuitService->completeCircuit($circuit_id);
          $circuitService->completeBoxAtCircuit($circuit_id);
       });
    }
    

1 个答案:

答案 0 :(得分:1)

将它们放在Laravel的交易函数中:

universal-controls="movementAcceleration: 100"

此处提供更多信息:https://laravel.com/docs/5.3/database#database-transactions