public function Instance(Entity $entity) { $this->entityName = $entity->name; foreach ($entity->fields as $k => $v) { $this->fields[$v->name] = TypeBuilder::getInstance()->create($v->name, $v->type, $v->foreign_key, $v->primary_key, $v->length, $v->mandatory); if (isset($v->reference)) { $this->fields[$v->name]->reference = $v->reference; $this->linkingFields[$v->name] = $this->fields[$v->name]; } if ($v->primary_key == true) { $this->keyFieldName = $v->name; } $this->{$v->name} = ""; } }
/** * @access public * @param name * @param type * @param for_key * @param pri_key * @param length * @param mandatory * @static * @ParamType name * @ParamType type * @ParamType for_key * @ParamType pri_key * @ParamType length * @ParamType mandatory */ public static function create($name, $type, $for_key, $pri_key, $length, $mandatory) { $typeInstance = null; $typeInstance = TypeBuilder::getInstance()->supported_types_factories[$type]->create($name, $type, $for_key, $pri_key, $length, $mandatory); return $typeInstance; }
/** * @access public * @param entity * @param name * @ParamType entity * @ParamType name */ public function addReference($entity, $name = "") { if ($name == "") { $name = "id_{$entity->name}"; } $type = $entity->fields[0]->type; $length = isset($entity->fields[0]->length) ? $entity->fields[0]->length : ''; if ($this->name == $entity->name) { $selfRelation = true; } else { $selfRelation = false; } $referenceField = TypeBuilder::getInstance()->create($name, $type, true, false, $length, "off"); $referenceField->referenceTo($this, $entity, $selfRelation); $this->fields[] = $referenceField; $entity->referred[$this->name][] = $this; $entity->referredBy[$this->name]['entity'][] = $this; $entity->referredBy[$this->name]['foreign key'][] = $name; if ($this->name == $entity->name) { beContent::getInstance()->selfrefs[md5($this->name . $name)]['table'] = $this->name; beContent::getInstance()->selfrefs[md5($this->name . $name)]['field'] = $name; } $this->lastFieldIndex = count($this->fields) - 1; }