all(); $properties = Property::find()->all(); $propertyByDefinition = AppArrayHelper::objectArrayToMap($properties, function ($property) { return $property->id_property_definition; }, function ($property) { return $property; } ); foreach ($definitions as $definition) { $setting = new PropertySetting([ 'property' => AppArrayHelper::getOrDefault($propertyByDefinition, $definition->id), 'definition' => $definition ]); $settings[] = $setting; } return $settings; } /** * @param PropertySetting $setting */ public function saveSetting($setting ){ Property::deleteAll(['id_property_definition' =>$setting->definition->id ]); $setting->property->save(false); } /** * @param PropertySetting[] $setting */ public function saveSettings($settings ){ foreach ($settings as $setting){ Property::deleteAll(['id_property_definition' =>$setting->definition->id ]); $setting->property->save(false); } } public function getSettingsMap(){ $settings = $this->getPropertySettings(); return AppArrayHelper::objectArrayToMap($settings, function ($setting){ return $setting->definition->name; }, function ($setting){ return $setting->getValue(); }); } public function getSettingFromSettingsMap($settingsMap,$key,$defaultValue = null){ return AppArrayHelper::getOrDefault( $settingsMap, $key, $defaultValue ); } public function getSetting($key,$defaultValue = null){ $settingsMap = $this->getSettingsMap(); return $this->getSettingFromSettingsMap($settingsMap,$key,$defaultValue); } }