$value) { DB::table($table)->where('event_id', $event_id)->where('bookmaker_id', $bookmaker_id)->update(['active_spread' => 0]); if (in_array($table, ['odds_points', 'odds_points_ht', 'odds_points_q1'])) { $max_tries = 5; $tries = 0; do { $retry = false; try { $query = DB::table($table) ->where('event_id', $event_id) ->where('bookmaker_id', $bookmaker_id) ->where('handicap', (float) $value['active_spread']) ->update(['active_spread' => 1]); return $query; } catch (PDOException $exc) { if ($tries < $max_tries && $exc->errorInfo[0] == 40001 && $exc->errorInfo[1] == 1213) { $retry = true; sleep(1); } else { throw $exc; } } } while ($retry); } else { $max_tries = 5; $tries = 0; do { $retry = false; try { $query = DB::table($table) ->where('event_id', $event_id) ->where('bookmaker_id', $bookmaker_id) ->where('total', (float) $value['active_spread']) ->update(['active_spread' => 1]); return $query; } catch (PDOException $exc) { if ($tries < $max_tries && $exc->errorInfo[0] == 40001 && $exc->errorInfo[1] == 1213) { $retry = true; sleep(1); } else { throw $exc; } } } while ($retry); } } } }