4Schema与数据库字段类型之间的映射关系

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com

在模式定义中声明的字段类型,将会映射成具体数据库中的本地字段类型。例如,一个sizetiny的整数字段将映射为MySQL中的TINYINT字段,或者PostgreSQL中的smallint字段。我们以mysql为例,看看实际的映射,在includes/database/mysql/schema.inc文件中,类DatabaseSchema_mysql中的公共方法getFieldTypeMap(),列出了对应的映射关系。

 

  public function getFieldTypeMap() {

    

    static $map = array(

      'varchar:normal'  => 'VARCHAR',

      'char:normal'     => 'CHAR',

 

      'text:tiny'       => 'TINYTEXT',

      'text:small'      => 'TINYTEXT',

      'text:medium'     => 'MEDIUMTEXT',

      'text:big'        => 'LONGTEXT',

      'text:normal'     => 'TEXT',

 

      'serial:tiny'     => 'TINYINT',

      'serial:small'    => 'SMALLINT',

      'serial:medium'   => 'MEDIUMINT',

      'serial:big'      => 'BIGINT',

      'serial:normal'   => 'INT',

 

      'int:tiny'        => 'TINYINT',

      'int:small'       => 'SMALLINT',

      'int:medium'      => 'MEDIUMINT',

      'int:big'         => 'BIGINT',

      'int:normal'      => 'INT',

 

      'float:tiny'      => 'FLOAT',

      'float:small'     => 'FLOAT',

      'float:medium'    => 'FLOAT',

      'float:big'       => 'DOUBLE',

      'float:normal'    => 'FLOAT',

 

      'numeric:normal'  => 'DECIMAL',

 

      'blob:big'        => 'LONGBLOB',

      'blob:normal'     => 'BLOB',

    );

    return $map;

  }

 

  'not null' => TRUE,

  'default' => '',

),

如果default键未被设置,并且not null键被设置为了FALSE,那么默认值将被设置为NULL

 

Text

Text字段用于大块的文本。例如,node_type表中的description字段就是这种类型。Text字段可以不使用默认值。

 

'description' => array(

  'description' => 'A brief description of this type.',

  'type' => 'text',

  'not null' => TRUE,

  'size' => 'medium',

  'translatable' => TRUE,

 ),

    其中size的类型可以为tinysmallmediumbignormal

 

 


Drupal版本: