2、dbschema
dbschema 字段属性
‘type’ => ‘int unsigned’, //字段类型
‘extra’ => ‘auto_increment’,//定义自增
‘pkey’ => true,//主键
‘required’ => true,//该字段为必须
创建唯一性字段?
'index' => array(
'user' => array('columns' => array('email'),'prefix' => 'UNIQUE'),
),//唯一字段设置
相关文档:http://ec-os.net/advance/base/mvc/m/dbschema.html#id2
dbschema type类型
dbschema相关type类型:
money 'price' decimal(20,3) default 0.00
email 'email' varchar(255)
time 'create_time' int(10) unsigned
cdate 'create_time' int(10) unsigned
password 'passwd' varchar(32)
枚举类型、bn、html、bool、intbool、region
Tinybool、number、float、gender、ipaddr、
Serialize、last_modify、mysql字段类型
3、model的调用
1、model概述
如何创建自己的model
model的命名规则
{$app_id}_mdl_{$mod_path}
model存放位置
app/{$app_id}/model/{mod_path}/
1.获取model对象
. 获取本app 的model
$model = $this->app>model('$model');
.获取其他app 的model
$model = app::get('b2c')->model($model);
.更通用的方法kernel::single()
$model = kernel::single(‘b2c_mdl_$model');
2. 在model中获取数据库操作对象
.通过调用基类成员变量$db
$result = $this->db->select($sql); //注意model要继承base_db_model或则dbeav_model
.通过kernel::database()直接获取数据库操作对象
$result = kernel::database()->select($sql);
3、model常用方法
ECOS model 常用方法
. exec (query )执行sql语句
. select 对数据库表进行select
. selectrow 返回单行数据
. selectlimit 与select函数差不多, 区别在于, 用selectlimit不必手拼limit
. getRows 通过mysql结果集连接标识, 获取单/多行数据
. quote 对准备入数据库表字段的数据做安全转义处理
. lastinsertid 获取最后插入数据库的条目的id号
. affect_row 获取之前mysql语句操作所影响的行数
ECOS model 常用方法二
. count 通过过滤器,取得对应表的数据行数
. getList 获取model对应表的单/多行数据, 可根据需要重载
. dump 获取model 对应表单行数据
. insert 插入单行数据, 会根据dbschema的type做转义处理
. save 保存数据,如果数据存在则做更新处理
. updata 根据更新数据
. delete 根据条件删除数据
. beginTransaction,commit ,rollBack 事物处理
1. 基本的filter用法
$filter = array('sex' => 'male','age' => array (23, 45, 54));
$this->delete($filter);
2.filter 扩展用法(model 需要集成dbeav_model )
$FilterArray= array('than'=>' > '.$var,
'lthan'=>' < '.$var, 注意:在$filter中可以写自己的sql 条件
'nequal'=>' = \''.$var.'\'',
'noequal'=>' <> \''.$var.'\'', $filter = array(
'tequal'=>' = \''.$var.'\'', 'filter_sql'=>' sex=male and age=23',
'sthan'=>' <= '.$var, );
'bthan'=>' >= '.$var,
'has'=>' like \'%'.$var.'%\'',
'head'=>' like \''.$var.'%\'',
'foot'=>' like \'%'.$var.'\'',
'nohas'=>' not like \'%'.$var.'%\'',
'between'=>' {field}>='.$var[0].' and '.' {field}<'.$var[1],
'in' =>" in ('".implode("','",(array)$var)."') ",
'notin' =>" not in ('".implode("','",(array)$var)."') ",
);
三、desktop
1、控制器主要方法
. ECOS 中autoload机制(class 命名规则)
1、controller命名规则
2、model命名规则
3、lib中的命名规则
. ECOS中实例化类的方法
1、app::get('$app')->model('$model');app::get('$app')->render();
//主要用来调用model,base_render类
2、通用方法kernel::single(„$class‟„);//主要用来调用lib中的类
. 后台controller常用方法
1、显示view页面:
• page("xxx.html‟) ;
• singlepage('xxx.html');
• display('xxx.html');
2、向view页面分配数据 :
• pagedata();
3、拼接url地址
• gen_url();
• 后台的控制器必须继承desktop_controller,继承后才有finder方法,下面介绍下
finder方法的几个参数:
第一个参数是字符串,(例如:ecbook_mdl_item ),是model里的class名,
它决定了finder列表的数据源,默认情况下是ecbook_mdl_item类里的getList方
法返回的数据
第二个参数是数组,这个数组内涵相当丰富,解释如下:
use_buildin_recycle: 是否显示删除操作
use_buildin_export: 是否显示导出操作
use_buildin_import: 是否显示导入操作
base_filter:对tab数据进行过滤筛选,参照上面格式
use_buildin_filter: 是否使用高级筛选
use_buildin_refresh: 是否显示刷新操作(高级筛选旁)
use_buildin_setcol: 是否显示列配置
use_buildin_selectrow: 是否显示每条记录前的复选按钮
• finder上的自定义标签
后台tab标签显示如右:
需要在调用了finder 的控制器里定义_views方法,_views方法的返回值格式如下:
配置参数:
label: tab的标题文字
optional: 此tab是否可选
filter: 此tab的过滤条件
addon: 此过滤条件下有多少条记录
href: 此tab的链接地址