/** * @param array $relationData * @param \Phalcon\Mvc\Model $model * @param string $relationName * @return mixed */ private function create(array $relationData, $model, $relationName) { $modelRelation = $model->getModelsManager()->getRelationByAlias(get_class($model), $relationName); $referencedModel = $modelRelation->getReferencedModel(); $referencedField = $modelRelation->getReferencedFields(); $relationModel = new $referencedModel(); $relationData[$referencedField] = $model->id; $relationModel->assign($relationData); $this->securityManager->check(array('model' => $relationModel, 'action' => CrudOperations::CREATE, 'modelName' => get_class($relationModel), 'params' => $relationData)); $result = $relationModel->save(); if ($result) { $this->logManager->createModel($relationModel); } return $result; }
private function createRelation($model, $relationName, $relationValues, $messages = array()) { foreach ($relationValues as $relationValue) { unset($relationValue['id']); $relation = new $relationName(); $relation->assign($relationValue); $referencedFields = $model->getHasManyRelationReferencedFields($relationName); $relation->assign(array($referencedFields => $model->id)); $this->securityManager->check(array('model' => $relation, 'action' => CrudOperations::CREATE, 'modelName' => get_class($relation), 'params' => $relationValues)); if ($relation->save()) { $this->logManager->createModel($relation); } else { $messages[] = implode(', ', $relation->getMessages()); } } return $messages; }