主页 > 后端 > thinkphp教程 >
来源:未知 时间:2014-12-02 09:44 作者:xxadmin 阅读:次
[导读] add方法返回主键(id)的值 在往数据表中添加数据时调用add方法,默认返回值就是刚添加的id值,就不用再去查询了. save方法返回值的判断 在修改数据时,如果修改成功返回的是1,不成...
add方法返回主键(id)的值
在往数据表中添加数据时调用add方法,默认返回值就是刚添加的id值,就不用再去查询了. save方法返回值的判断 在修改数据时,如果修改成功返回的是1,不成功则是0,如果没用做任何的修改就保存了,那么返回值还是0. 查询后置方法详解 如_after_select,_after_insert,_after_update,_after_delete,_after_find等 巧妙地利用这些方法可以简化开发 用_after_select(&$result,$options)举例: 参数:$result,这是select出的结果数组。注意这里是一个引用传参,也就是说我们可以直接改变传递过来的值而不需要返回 $options,这是查询的条件,也就是where()里面的条件 假如你查询出的数据有time这一字段,并且是以int型保存的,那么可以在这个方法里进行时间格式化的操作 protected function _after_select(&$result,$options) foreach($result as $key=>$value){ $result[$key]['time'] = date('Y-m-d H:i:s', $value['time']); } } 这样就不需要每次在模板上显示的时候,再用函数来处理了 同样地,可以用_after_insert来代替关联操作,在新增完一条数据后再根据参数更新一些关联的数据 当然,除了后置方法,还有前置方法。可以用来代替一些复杂的数据验证或者进行数据的预处理,类似于自动完成和自动验证 protected function _before_insert(&$data,$options) { //对新增前的数据进行处理 foreach ($data as $key=>$value){ $value['status'] = 1;//类似于自动完成 if($value['age'] > 100){//类似于自动验证 return false; } } } 最后,有几点需要注意的:1,这些方法都是必须写在model里面的 2,这些方法所接收的参数,有些是引用传参,有些是传值,得注意区分。具体可参考手册 3,在方法里不需要返回值。调用这些方法的地方,并没有用变量来接收处理结果,所以返回值是没有意义的 打印sql语句 $User = D('User'); $User->select(); echo $User->getLastSql();或者echo $User->_sql(); 获取最后执行的sql语句,方便查看调试 跨模板主题调用模板 假如Tpl下有new主题,该主题下有User文件夹,文件夹下有index.html 你当前的模板主题是Tpl下的default,那么可以用$this->display('new:User:index'); 或者用全路径输出$this->display('./Tpl/new/User/index.html'); 路由规则^符号的使用 这个符号在手册中没有提及,但是作用却不可忽视。 用法:'user/^getlist|tag' => 'user/index' 作用:在user模块中,除了getlist和tag方法,其他存在的方法全部指向index方法。参数之间用|间隔 这样可以屏蔽一些不想让用户访问到但是又必须定义成public的方法 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com