Ejemplo n.º 1
0
 public function registerField(ARField $schemaField, $reference = true)
 {
     $name = $schemaField->getName();
     $this->fieldList[$name] = $schemaField;
     if ($schemaField instanceof ARForeignKey) {
         $this->foreignKeyList[$name] = $schemaField;
     }
     if ($schemaField instanceof ARPrimaryKey) {
         $this->primaryKeyList[$name] = $schemaField;
     }
     if (!$reference) {
         $this->skippedReferences[$name] = true;
     }
     $this->fieldsByType[get_class($schemaField->getDataType())][$name] = $schemaField;
 }
Ejemplo n.º 2
0
 public static function getFieldType(ARField $field)
 {
     $fieldType = $field->getDataType();
     if ($field instanceof ARForeignKeyField || $field instanceof ARPrimaryKeyField) {
         return null;
     }
     if ($fieldType instanceof ARBool) {
         $type = 'bool';
     } elseif ($fieldType instanceof ARNumeric) {
         $type = 'numeric';
     } elseif ($fieldType instanceof ARPeriod) {
         $type = 'date';
     } else {
         $type = 'text';
     }
     return $type;
 }
Ejemplo n.º 3
0
 protected function _defineField(ARField $field, $autoincrement = true, $not_null = true)
 {
     $sql = '';
     $type = $field->getDataType();
     $length = $type->getLength();
     if (!empty($length)) {
         $length = "(" . $length . ") ";
     } else {
         $length = " ";
     }
     if ($autoincrement) {
         if ($field instanceof ARPrimaryKeyField) {
             return $sql . "serial NOT NULL ";
         }
     }
     switch (get_class($type)) {
         case 'Integer':
             $sql .= "numeric" . $length;
             break;
         case 'Bool':
             $sql .= "numeric(1) ";
             break;
         case 'Binary':
             $sql .= "bit" . $length;
             break;
         case 'DateTime':
             $sql .= "timestamp ";
             break;
         case 'Float':
             $sql .= "float ";
             break;
         default:
             //integer, varchar, char, time, datetime, date
             $sql .= get_class($type) . $length;
             break;
     }
     if ($not_null) {
         $sql .= "NOT NULL ";
     }
     return $sql;
 }
Ejemplo n.º 4
0
 /**
  * Creates ARForeignKeyField instance
  *
  * @param string $fieldName
  * @param string $foreignTableName
  * @param string $foreignClassName
  * @param int $dataType
  * @param int $typeLength
  */
 public function __construct($fieldName, $foreignTableName, $foreignFieldName, $foreignClassName = null, ARSchemaDataType $dataType)
 {
     parent::__construct($fieldName, $dataType);
     $this->foreignClassName = !empty($foreignClassName) ? $foreignClassName : $foreignTableName;
     $this->foreignTableName = $foreignTableName;
     $this->foreignFieldName = $foreignFieldName;
     $this->referenceFieldName = $this->referenceName = ucfirst(substr($this->name, 0, -2));
     if (!$this->referenceName) {
         $this->referenceName = $this->foreignClassName;
     }
     if (!$this->referenceFieldName) {
         $this->referenceFieldName = $this->name;
     }
     if ($this->foreignClassName != $this->referenceName) {
         $this->referenceName = $this->foreignClassName . '_' . $this->referenceName;
     }
 }
Ejemplo n.º 5
0
 protected function _defineField(ARField $field, $auto_increment = true)
 {
     $sql = '';
     $type = $field->getDataType();
     $type_name = strtolower(get_class($field->getDataType()));
     $length_value = $type->getLength();
     if (!empty($length_value)) {
         $length = "(" . $length_value . ") ";
     } else {
         $length = " ";
     }
     if ($length_value > 255 && ($type_name == 'char' || $type_name == 'varchar')) {
         $sql = 'text ';
     } else {
         switch ($type_name) {
             case 'bool':
                 $sql .= "integer(1) ";
                 break;
             case 'float':
                 $sql .= "float ";
                 break;
             case 'char':
             case 'binary':
                 $sql .= 'var' . $type_name . $length;
                 break;
             default:
                 //integer, varchar, time, datetime, date
                 $sql .= $type_name . $length;
                 break;
         }
     }
     $sql .= "NOT NULL ";
     if ($auto_increment && $field instanceof ARPrimaryKeyField) {
         $sql .= "AUTO_INCREMENT ";
     }
     return $sql;
 }