ecos的dbschema
dbschema
base/dbschema/apps.php
<?php //apps表名 $db['apps'] = array( 'columns'=>array( 'app_id'=>array( 'type'=>'varchar(32)', 'required'=>true, 'default'=>'', 'pkey'=>true, // begin 和 desktop 相关 'with'=>100, 'label'=>app::get('base')->_('程序目录'), 'hidden'=>1, 'editable'=>false, 'in_list'=>true, 'default_in_list'=>false ), 'app_name'=>array( 'type'=>'varchar(50)', //begin 和 desktop相关 'with'=>150, 'label'=>app::get('base')->_('应用程序'), 'is_title'=>1, 'in_list'=>true, 'default_in_list'=>1 ), 'status' => array( 'type' => array ( 'installed' => app::get('base')->_('已安装, 未启动'), 'resolved' => app::get('base')->_('已配置'), 'starting' => app::get('base')->_('正在启动'), 'active' => app::get('base')->_('运行中'), 'stopping' => app::get('base')->_('正在关闭'), 'uninstalled' => app::get('base')->_('尚未安装'), 'broken' => app::get('base')->_('已损坏'), ), // begin 和desktop相关 ---------------------- 'label' => app::get('base')->_('状态'), 'width' => 100, 'default' => 'uninstalled', 'in_list' => true, 'default_in_list' => true, // end -------------------------------------- ), 'remote_config'=> array( 'type'=>'serialize' ) ), 'version'=>'$Rev: 44008 $', 'unbackup'=>true );
上述代码经过解析生成sql语句
dbschema来描述表结构
ecos安装时,会扫描相关app中的dbschema中的文件,用这个文件生成相应的表结构并创建
约定base/dbschema/apps
生成的表sdb_base_apps sdb表前缀 base是appname
对应model base_mdl_apps
columns
表字段
注意!type字段类型,pkey是否主键,extra=>'auto_increment'自增长,type=>'table:goods'对应用于用于app下goods表的主键类型(其实这里是外键了,所以类型和goods表的主键相同)
字段名称
字段名称就是键值
type
mysql字段类型,int、varchar、text
枚举类型type=>array() 对应mysql的enum //desktop 高级搜索产生一个select选项可以进行选择
特有的类型
money 对应 decimal(20,3)//涉及到金额 dbeav的save会验证是否是money类型的数据
email 对应 varchar(255)//dbeav的save会验证是否是email类型的数据
bn 对应 varchar(255)//商品的货号 货品的货号 订单号等等
html 对应 text//商品详情 文章内容等
bool 对应 enum('true','false')//开关类型
time 对应 int(10) unsigned(无符号)//desktop的高级搜索绑定日历
cdate 对应 int(10) unsigned
intbool 对应 enum('0','1')//开关类型
region 对应 varchar(255)
password 对应 varchar(32) md5加密后的字符串
tinybool 对应 enum('Y','N')//开关类型
number 对应 mediumint unsigned//数量等类型
float 对应 float
gender 对应 enum('male','false')//性别
ipaddr 对应 varchar(20) //ip地址
serialize 对应 longtext//
last_modify 对应 int(10) unsigned //和time类型相似,可以理解为最后更新时间
table:table_name 将本app下的table_name这个表的主键作为关联关系
required
true false(mysql "not null")
default
pkey 是否主键
primary key()
extra
扩展值
extra=>'auto_increment' mysql auto_increment
extra=>'CHARACTER SET "utf8"' mysql CHARACTER SET "utf8"
index
索引 默认为空
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [index_type] ON tbl_name (index_col_name,...) [index_type] index_col_name: col_name [(length)] [ASC | DESC] index_type: USING {BTREE | HASH | RTREE}
<?php 'index' => array ( 'ind_prefix' => array( // 索引名称 'columns' => array( // 要创建索引的数据库字段名 0 => 'prefix', ), 'prefix' => '' // 索引的类型 UNIQUE|FULLTEXT|SPATIAL 如果为空 为一般的索引 'type' => '' // 指定索引算法 BTREE | HASH | RTREE ) ) ?>