$value) { $modelInstance = call_user_func( [$metaModel, 'firstOrNew'], [ 'key' => $key, 'meta_type' => $metaType, 'meta_id' => $metaId, ] ); $value = $this->removeEmptyValues($value); if (!empty($value)) { $modelInstance->setAttribute('value', $value); $modelInstance->save(); continue; } // The value is empty, remove the row if ($modelInstance->exists) { $modelInstance->delete(); } } } /** * Determine if a Value is empty. * * @param mixed $values * * @return array|mixed */ protected function removeEmptyValues($values) { if (!is_array($values)) { return empty($values) ? null : $values; } foreach ($values as $key => $value) { if (!empty($value)) { continue; } unset($values[$key]); } return $values; } }