在MicroPHP里面有个MpTableModel类,MpTableModel继承了类MpModel。该类封装了常用的表操作。每个类的对象都和一个具体的表绑定。 实例化一个表模型可以通过函数table($table_name,$db=null);返回的是MpTableModel类对象,MpTableModel类继承了MpModel类。 参数说明: $table_name 表名称,不含配置的前缀 $db 使用的数据库连接,留空默认使用当前的$this->db。可以是$this->database()方法返回的数据库连接对象。 提示: 1.使用table()之前要确定一下$system['table_cache_folder']文件夹是否存在,该文件夹用来缓存表字段信息。 2.如果后期修改了表结构增加或者删除了字段,记得删除1中文件夹里面的对应表缓存文件,名字是:表名称.php。 实用的方法如下: $table_model=table('user'); (1).find($values, $is_rows = false, $order_by = null)方法,查询数据 find方法非常灵活,下面给出几个使用示例: 1.获取主键是10的记录 $table_model->find(10) 2.获取主键是10,11的两个记录 $table_model->find(array(10,11),true) 3.根据条件获取一条记录 $table_model->find(array('id'=>100)) 4.根据条件获取多条记录 $table_model->find(array('id >'=>10),true) 5.获取主键是10,11的两个记录,并用id排序 $table_model->find(array(10,11),true,'id desc') 6.根据条件获取多条记录,并用id排序 $table_model->find(array('id >'=>10),true,'id asc') (2).findAll($where = null, $orderby = NULL, $limit = null, $fileds = null),获取所有数据。 下面是几个例子: 1.查询表所有数据。 $table_model->findAll() 2.查询表中type为1的所有数据。 $table_model->findAll(array('type'=>1)) 3.查询表中type为1的所有数据,并且按着id倒序排列。 $table_model->findAll(array('type'=>1),'id desc') 4.查询表中type为1的按着id倒序排列的100条数据。 $table_model->findAll(array('type'=>1),'id desc',100) 5.查询表中type为1的按着id倒序排列的100条数据,同时只获取id和name两个字段。 $table_model->findAll(array('type'=>1),'id desc',100,'id,name') (3).findCol($col, $where, $is_rows = false, $order_by = null)方法,查询字段数据 findCol和find类似,值是获取的是某个字段的值或者数组,示例可以参考find方法。 (4).delete($values, Array $cond = NULL)方法,删除数据 delete方法是用来删除数据。 下面是几个例子: 1.删除主键是10的记录 $table_model->delete(10) 2.删除主键是10,11,12的记录 $table_model->delete(array(10,11,12)) 3.删除主键是10,11,12记录中gid是3的记录 $table_model->delete(array(10,11,12),array('gid'=>3)) (5).deleteIn($key, $values, Array $cond = NULL)方法,删除数据 下面是几个例子: 1.删除cat_id是3的记录 $table_model->deleteIn(‘cat_id’,3) 2.删除cat_id是3,4,5的记录 $table_model->deleteIn(‘cat_id’,array(3,4,5)) 3.删除cat_id是3,4,5记录中id大于100的记录 $table_model->deleteIn(‘cat_id’,array(3,4,5),array('id >'=>100)) (6).check($source_data, &$ret_data, $rule = null, $map = null)方法,验证数据 参数说明: $source_data 数据源,要检查的数据 $ret_data 数据验证通过$ret_data是验证规则处理后的数据,用于插入或者更新到数据库,数据验证失败$ret_data是空数组 $rule 验证规则,格式:array( '字段名称'=>array( '表单验证规则'=>'验证失败提示信息', ... ), ... ) $map 字段映射信息数组。格式:array('表单name名称'=>'表字段名称',...) 返回null:验证通过。返回字符串:验证失败提示信息。 使用示例: $user = table('admin'); $_POST['user'] = 'test'; //$_POST['user'] = 'testaa'; $_POST['pass'] = 'testtesttesttest'; $rule = array( 'username' => array($this->rule->range_len(5, 16) => '用户名5-16字符'), 'password' => array($this->rule->len(16) => '密码16字符'), ); $map=array('user'=>'username','pass'=>'password'); $data = array(); if (is_null($msg = $table_model->check($_POST, $data, $rule,$map))) { //dump($data); dump($table_model->update($data,3)); } else { echo $msg; } (7).insert($ret_data),插入数据。 $ret_data应该是check()验证通过的数据。 (8).update($ret_data, $where),需要更新的数据。 $ret_data 应该是check()验证通过的数据。 $where 可以是where条件关联数组,还可以是主键值。 (9).columns(),获取表字段数组。 (10).getPage($page, $pagesize, $url, $fields = '*', Array $where = null, Array $like = null, $orderby = null, $page_bar_order = array(1, 2, 3, 4, 5, 6), $page_bar_a_count = 10) getPage用于获取分页数据,同时含有分页条。返回的是一个数组,items字段是结果集,page字段是分页条字符串。 参数说明: $page 第几页 $pagesize 每页多少条 $url 基础url,里面的{page}会被替换为实际的页码 $fields select的字段,全部用*,多个字段用逗号分隔 $where where条件,关联数组 $like 搜素的字段,比如array('title'=>'java');搜索title包含java $orderby 排序字段,比如: 'id desc' $page_bar_order 分页条组成,可以参考手册分页条部分 $page_bar_a_count 分页条a的数量,可以参考手册分页条部分 下面是使用示例: 1.第一页,每页20条。 $table_model->getPage(1, 20, '?demo/&p={page}', '*', null, null, null, array(3, 5)); (11).search($page, $pagesize, $url, $fields, $cond, $page_bar_order = array(1, 2, 3, 4, 5, 6), $page_bar_a_count = 10) getPage用于获取分页数据,同时含有分页条。返回的是一个数组,items字段是结果集,page字段是分页条字符串。 参数说明: $page 第几页 $pagesize 每页多少条 $url 基础url,里面的{page}会被替换为实际的页码 $fields select的字段,全部用*,多个字段用逗号分隔 $cond SQL语句where后面的部分,不要带limit $page_bar_order 分页条组成,可以参考手册分页条部分 $page_bar_a_count 分页条a的数量,可以参考手册分页条部分 下面是使用示例: 1.搜索id大于11而且type为3,按着id倒序排列。每页20条。 $query='id>11 and type=3 order by id desc'; $url='?demo.page&query=' . urlencode($query) . '&p={page}'; $table_model->search($this->input->get('p'), 20, $url , '*', $query));
Powered By 狂奔的蜗牛 | 历史版本 | 源代码 | 快速入门 | MicroPHP@开源中国
源代码许可证 Apache License v2.0
MicroPHP官方QQ交流群 : 42807575 , 有问题欢迎加群交流