我正在使用Database Transaction
作为终点,员工可以接受该订单后执行某些操作。我不希望将相同的订单分配给不同的员工。我使用了Database transaction
,但问题是当员工同时接受订单时,多个员工被分配到相同的订单。示例代码如下:
try {
$message = [
"status_validation" => "Input status must have value assigned",
"unique" => "Order is assigned to other driver"
];
$this->validate($request, [
"restaurant_id" => 'required|integer|min:1',
"order_id" => 'required|integer|min:1|unique:driver_order,order_id',
"status" => 'required|status_validation'
], $message);
} catch (\Exception $ex) {
return response()->json([
"status" => "422",
"message" => $ex->response->original
], 422);
}
try {
DB::beginTransaction();
$assignOrderToDriver = $this->driverOrder->createDriverOrder($request);
DB:commit();
return response()->json([
"status" => "200",
"message" => "Order has been sucessfully assigned."
], 200);
}
catch (\Exception $ex) {
return response()->json([
"status" => "500",
"message" => $ex->getMessage()
], 500);
}
这个问题确实在我的项目中造成了问题。我在这里做错了什么?谢谢。
我认为应该在$ this-> driverOrder-> createDriverOrder()中改变一些东西。你能分享一下这个功能的代码吗?