status != Orders::STATUS_ONGOING) { $order->affected_orders = $affected_orders; return $order; } //护工没换 if ($order->paramedic_id == $from_paramedic) { $order->affected_orders = $affected_orders; return $order; } //更换护工,查询从原护工手上退出订单后,原护工的其他订单是否变成了1对1 if ($from_paramedic) { $last_orders = Orders::where("paramedic_id", $from_paramedic) ->where("status", Orders::STATUS_ONGOING) ->where("paramedic_id", "<>", $order->paramedic_id) //剔除未更换护工的情况 ->get(); //仅取唯一的一条。如果总数大于1,说明护工撤出后仍然是一对多,按照既定规则,不产生价格变化 if ($last_orders->count() === 1) { $many_to_one = $last_orders->first(); $many_to_one->change = "many_to_one"; $affected_orders[] = $many_to_one->id; } } //查询护工新接手一张单之后,是否有订单从1对1变成了1对多 $new_same_paramedic_orders = Orders::where("paramedic_id", $order->paramedic_id) ->where("status", Orders::STATUS_ONGOING) ->where("id", "<>", $order->id) //剔除订单本身 ->get(); //仅取唯一的一条。如果总数大于1,说明护工在未增加订单之前已经是1对多,按照既定规则,不产生价格变化 if ($new_same_paramedic_orders->count() === 1) { $one_to_many = $new_same_paramedic_orders->first(); $one_to_many->change = "one_to_many"; $affected_orders[] = $one_to_many->id; } $order->affected_orders = $affected_orders; return $order; } }