private function manageTelemetryRelations() { $currentTelemetry = $this->mission->telemetry->keyBy('telemetry_id'); foreach ($this->input['mission']['telemetry'] as $telemetryInput) { // If the telemetry exists, update it, otherwise, create it if (array_key_exists('telemetry_id', $telemetryInput)) { $telemetry = $currentTelemetry->pull($telemetryInput['telemetry_id']); $telemetry->fill($telemetryInput); $telemetry->save(); } else { $telemetry = new Telemetry($telemetryInput); $telemetry->mission()->associate($this->mission); $telemetry->save(); } } // Delete any telemetry payloads if (!$currentTelemetry->isEmpty()) { Telemetry::whereIn('telemetry_id', $currentTelemetry->keys())->delete(); } }