/** * Save a model with it's relations. * * @param $data * @param null $id * * @return static */ public static function save($data, $id = null) { if ($id) { $employee = Employee::findOrFail($id); $employee->fill($data); } else { $employee = Employee::create($data); } Address::whereEmployeeId($employee->id)->delete(); // flush Course::whereEmployeeId($employee->id)->delete(); foreach (array_get($data, 'address', []) as $key => $d) { if (empty($d['city']) && empty($d['street']) && empty($d['number'])) { continue; } $address = new Address($d); $address->employee_id = $employee->id; $address->save(); } foreach (array_get($data, 'course', []) as $key => $d) { if (empty($d['title']) && empty($d['start']) && empty($d['end'])) { continue; } $course = new Course($d); $course->employee_id = $employee->id; $course->save(); } $employee->save(); return $employee; }