Esempio n. 1
0
 /**
  * Queries for has relation fields without a link model and sets the result to the provided result
  * @param array $result Model query result
  * @param integer $recursiveDepth Recursive depth for the queries
  * @param string $fieldName Name of the has field
  * @param zibo\library\orm\definition\field\HasField $field Definition of the field
  * @return array Model query result with the has fields
  */
 private function queryHasWithoutLinkModel(array $result, ModelMeta $meta, $recursiveDepth, $fieldName, HasField $field)
 {
     $locale = $this->getLocale();
     $model = $meta->getRelationModel($fieldName);
     $foreignKey = $meta->getRelationForeignKey($fieldName)->getName();
     $isHasOne = $field instanceof HasOneField;
     $indexOn = null;
     if (!$isHasOne) {
         $indexOn = $field->getIndexOn();
     }
     foreach ($result as $index => $data) {
         $query = $model->createQuery($recursiveDepth, $locale, $this->willIncludeUnlocalizedData);
         $query->removeFields('{' . $foreignKey . '}');
         $query->addCondition('{' . $foreignKey . '} = %1%', $data->id);
         if ($isHasOne) {
             $result[$index]->{$fieldName} = $this->queryHasOneWithoutLinkModel($query, $foreignKey, $data);
         } else {
             $result[$index]->{$fieldName} = $this->queryHasManyWithoutLinkModel($query, $meta, $fieldName, $foreignKey, $data, $indexOn);
         }
     }
     return $result;
 }
Esempio n. 2
0
 /**
  * Creates a form field for the provided model relation field
  * @param zibo\library\html\form\field\FieldFactory $fieldFactory Instance of the field factory
  * @param zibo\library\orm\model\ModelMeta $meta Meta of the model of the relation field
  * @param zibo\library\orm\definition\field\RelationField $field Definition of the relation field
  * @param mixed $value Value for the form field
  * @return zibo\library\html\form\field\Field
  */
 protected function createFormFieldFromRelationField(FieldFactory $fieldFactory, ModelMeta $meta, RelationField $field, $value)
 {
     $relationModel = $meta->getRelationModel($field->getName());
     $list = $relationModel->getDataList();
     if (!is_array($value) && is_object($value)) {
         $value = $value->id;
     }
     $formField = $fieldFactory->createField(FieldFactory::TYPE_LIST, $field->getName(), $value);
     $formField->setOptions($list);
     if ($field instanceof HasManyField) {
         $formField->setIsMultiple(true);
         $formField->setShowSelectedOptionsFirst(true);
     } else {
         $formField->addEmpty('---', '');
     }
     return $formField;
 }