ThinkPHP使用技巧经验总结
add方法返回主键(id)的值
在往数据表中添加数据时调用add方法,默认返回值就是刚添加的id值,就不用再去查询了.
save方法返回值的判断
在修改数据时,如果修改成功返回的是1,不成功则是0,如果没用做任何的修改就保存了,那么返回值还是0.
打印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的方法
model中的前置和后置操作
发现ThinkPHP里面隐藏了几个有用的方法, model层里面有几个很有用的方法并没有出现在手册里, 下面我列举一些.
1. _after_find 和 _after_select:查询成功的回调方法
用法:
在自定义的model中重写
class ArticleModel extends Model {
protected function _after_find(&$data, $option) {
switch ($data['status']) {
case -2:
$data['status_text'] = '待审核';
break;
case -1:
$data['status_text'] = '已删除';
break;
case 0:
$data['status_text'] = '禁用';
break;
case 1:
$data['status_text'] = '正常';
break;
}
}
protected function _after_select(&$resultSet,$options) {
foreach ($resultSet as &$data) {
$this->_after_find($data, $options);
}
}
}
这样在使用的时候, 你用
$list = D('Article')->select();
或
$info = D('Article')->find($id);
就会自动根据status字段添加status_text字段
还有一下方法, 大家可以自己测试
2. _after_delete , _before_delete
: 在删除操作之后 或 之前, 根据数据做一些操作 (如: 删除分类的时候 同时删除分类下的文章)
3. _after_insert , _before_insert
: 在插入之后 或 之前, 根据数据做一些操作 (如: 插入文章成功 自动让分类统计+1)
4. _after_update , _before_update
: 在更新之后 或 之前, 根据数据做一些操作 (如: 重新计算分类文章总数)
ThinkPHP使用技巧经验总结的更多相关文章
- thinkphp开发技巧经验分享
thinkphp开发技巧经验分享 www.111cn.net 编辑:flyfox 来源:转载 这里我给大家总结一个朋友学习thinkphp时的一些笔记了,从变量到内置模板引擎及系统变量等等的笔记了,同 ...
- 总结ThinkPHP使用技巧经验分享(二)
循环输出volist 还有别名 iterate 模版赋值:$User = D('User')$list = $User->findAll()$this->assign('list',$li ...
- 总结ThinkPHP使用技巧经验分享(一)
约定:1.所有类库文件必须使用.class.php作为文件后缀,并且类名和文件名保持一致2.控制器的类名以Action为后 缀3.模型的类名以Model为后缀,类名第一个字母须大写4.数据库表名全部采 ...
- 总结ThinkPHP使用技巧经验分享(三)
add方法返回主键(id)的值在往数据表中添加数据时调用add方法,默认返回值就是刚添加的id值,就不用再去查询了. save方法返回值的判断在修改数据时,如果修改成功返回的是被修改的记录数0,1,2 ...
- [调参]CV炼丹技巧/经验
转自:https://www.zhihu.com/question/25097993 我和@杨军类似, 也是半路出家. 现在的工作内容主要就是使用CNN做CV任务. 干调参这种活也有两年时间了. 我的 ...
- thinkPHP渗透之经验决定成败
如上图,目标就一个登陆框,最近 Thinkphp 程序很多,根据后台地址结构,猜测可能是 ThinkPHP ,随手输入 xxx 得到 thinkPHP 报错页面,确定目标程序和版本. 然后上 5.X ...
- EF使用CodeFirst方式生成数据库&技巧经验
前言 EF已经发布很久了,也有越来越多的人在使用EF.如果你已经能够非常熟练的使用EF的功能,那么就不需要看了.本文意在将自己使用EF的方式记录下来备忘,也是为了给刚刚入门的同学一些指导.看完此文,你 ...
- thinkphp小技巧
if(IS_POST) _404("页面不存在",U("index")) //如果不是POST提交,则跳转到index.debug模 ...
- thinkphp调试技巧
调试的经验:很多时候程序调试不出来,但是又找不出错误,往往是拼写错误可能是很小的拼写错误,很难看出,或者多了一个空格,比如在配置路由的时候'URL_ROUTER_ON '=true,这样设置就会错误, ...
随机推荐
- jvisualvm
f the fonts used by VisualVM are hard to read, switching the LaF might help. Try for example 'visu ...
- 我也谈 AngularJS 怎么使用Directive, Service, Controller
原文地址:http://sunqianxiang.github.io/angularjs-zen-yao-shi-yong-directiveservicecontroller.html 其转自大漠穷 ...
- maven编码 gbk 的不可映射字符解决办法
出现这个问题修改一下pom文件的编译配置就好了. <plugin> <groupId>org.apache.maven.plugins</groupId> < ...
- mr本地运行的几种模式
MR程序的几种提交运行模式 本地模型运行 1/在windows的eclipse里面直接运行main方法,就会将job提交给本地执行器localjobrunner执行 ----输入输出数据可以放在本地路 ...
- Altera CYCLONE III FPGA BGA布线
最近在做altera FPGA BGA相关的布线工作,收集了一些资料,公开出来以供大家讨论. 首先是器件引脚,只有弄清楚器件各个引脚的功能才能够进行布线,下面的文档详细描述了每个引脚的功能. 各引脚功 ...
- CSS实现三角形方法一--rotate+relative
方法说明:两个正方形,一个小的,一个大的,将大的正方向进行旋转,然后移动到小的正方形的合适位置,覆盖小正方形的一部分,使小正方形剩余部分为三角形,再把大正方形的背景色改为浏览器窗口的颜色. 用到知识: ...
- Ubuntu 开启SSH 以及LAMP环境安装
1. 更新 apt-get sudo apt-get update 2.安装 openssh sudo apt-get install openssh-server 3.设置root账号密码 sudo ...
- 三种Dataase Mapping的系统架构
ORM - O/R M - Object/Relational Mapping: A technique/idea used to map objects and thier individual r ...
- 利用 gperftools 对nginx mysql 内存管理 性能优化
利用 gperftools 对nginx 与 mysql 进行 内存管理 性能优化 降低负载. Gperftools 是由谷歌开发.官方对gperftools 的介绍为: These tools ...
- 一个不应该犯的错octave
今天在完成Andrew NG的机器学习神经网络作业,在实现花费函数的时候,没有使用循环,直接向量计算.前面都想的挺好的,很快就想到了如何使用向量来计算,可是在扩展y的时候,犯了一个超级傻的错误. y是 ...