public static function loadProperties(array $groupPost, array $postProperties, $update = false) { $data = $postProperties ? ArrayHelper::combine($groupPost, $postProperties) : $groupPost; if ($update) { $result = []; if ($groupPost) { foreach ($groupPost as $key => $group) { $groupModel = ($model = GroupProperty::findOne(['id' => ArrayHelper::getValue($group, 'id')])) ? $model : new GroupProperty(); if ($groupModel->load($group, '')) { //foreach properties $properties = []; foreach ($data[$key] as $property) { $propertyModel = ($model = Property::findOne(['id' => ArrayHelper::getValue($property, 'id')])) ? $model : new Property(); if (!$propertyModel->load($property, '')) { return []; } $properties[] = $propertyModel; } $result[] = ['group' => $groupModel, 'properties' => $properties]; } } } } else { $result = []; foreach ($data as $key => $items) { $properties = []; if ($postProperties) { array_walk($items, function ($entry) use(&$properties) { $properties[] = new Property($entry); }); } $result[] = ['group' => new GroupProperty($groupPost[$key]), 'properties' => $properties]; } } return $result; }