status != request()->from_status) { throw new \Exception("订单状态不匹配"); } $availableToStatus = []; switch ($order->status) { case Orders::STATUS_FINISHED: $availableToStatus = [Orders::STATUS_ONGOING]; break; default: //do nothing } if (!in_array(request()->to_status, $availableToStatus)) { throw new \Exception("订单状态不匹配"); } $order->update([ "status" => request()->to_status ]); return $order; } }