我使用的是Laravel 5.2.31版。我在CircuitController和CircuitService中构造了代码,以便重用一些函数,比如在Java中应该做的事情。
CircuitController:
public function pickingAtCarton(Request $request){
$circuitService = new CircuitService();
// Do some business here
$circuitService->completeCircuit($circuit_id);
$circuitService->completeBoxAtCircuit($circuit_id);
}
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);
});
}
答案 0 :(得分:1)
将它们放在Laravel的交易函数中:
universal-controls="movementAcceleration: 100"
此处提供更多信息:https://laravel.com/docs/5.3/database#database-transactions