Php 如何在Laravel中处理事务
我使用的是Laravel版本5.2.31。我在CircuitController和CircuitService中编写了结构化代码,以便重用一些函数,如Java中应该执行的操作Php 如何在Laravel中处理事务,php,laravel,Php,Laravel,我使用的是Laravel版本5.2.31。我在CircuitController和CircuitService中编写了结构化代码,以便重用一些函数,如Java中应该执行的操作 电路控制器: 公共函数pickingtcarton(请求$Request){ $circuitService=新的circuitService(); //在这里做点生意 $circuitService->completeCircuit($circuit\u id); $circuitService->completeBox
公共函数pickingtcarton(请求$Request){
$circuitService=新的circuitService();
//在这里做点生意
$circuitService->completeCircuit($circuit\u id);
$circuitService->completeBoxAtCircuit($circuit\u id);
}
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ís Ferreira的帮助编辑了解决方案
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);
});
}
只需将它们包含在Laravel的事务函数中:
public function pickingAtCarton(Request $request) {
DB::transaction(function () {
$circuitService = new CircuitService();
// Do some business here
$circuitService->completeCircuit($circuit_id);
$circuitService->completeBoxAtCircuit($circuit_id);
});
}
更多信息请点击此处: