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使用技巧经验总结的更多相关文章

  1. thinkphp开发技巧经验分享

    thinkphp开发技巧经验分享 www.111cn.net 编辑:flyfox 来源:转载 这里我给大家总结一个朋友学习thinkphp时的一些笔记了,从变量到内置模板引擎及系统变量等等的笔记了,同 ...

  2. 总结ThinkPHP使用技巧经验分享(二)

    循环输出volist 还有别名 iterate 模版赋值:$User = D('User')$list = $User->findAll()$this->assign('list',$li ...

  3. 总结ThinkPHP使用技巧经验分享(一)

    约定:1.所有类库文件必须使用.class.php作为文件后缀,并且类名和文件名保持一致2.控制器的类名以Action为后 缀3.模型的类名以Model为后缀,类名第一个字母须大写4.数据库表名全部采 ...

  4. 总结ThinkPHP使用技巧经验分享(三)

    add方法返回主键(id)的值在往数据表中添加数据时调用add方法,默认返回值就是刚添加的id值,就不用再去查询了. save方法返回值的判断在修改数据时,如果修改成功返回的是被修改的记录数0,1,2 ...

  5. [调参]CV炼丹技巧/经验

    转自:https://www.zhihu.com/question/25097993 我和@杨军类似, 也是半路出家. 现在的工作内容主要就是使用CNN做CV任务. 干调参这种活也有两年时间了. 我的 ...

  6. thinkPHP渗透之经验决定成败

    如上图,目标就一个登陆框,最近 Thinkphp 程序很多,根据后台地址结构,猜测可能是 ThinkPHP ,随手输入 xxx 得到 thinkPHP 报错页面,确定目标程序和版本. 然后上 5.X ...

  7. EF使用CodeFirst方式生成数据库&技巧经验

    前言 EF已经发布很久了,也有越来越多的人在使用EF.如果你已经能够非常熟练的使用EF的功能,那么就不需要看了.本文意在将自己使用EF的方式记录下来备忘,也是为了给刚刚入门的同学一些指导.看完此文,你 ...

  8. thinkphp小技巧

    if(IS_POST) _404("页面不存在",U("index"))               //如果不是POST提交,则跳转到index.debug模 ...

  9. thinkphp调试技巧

    调试的经验:很多时候程序调试不出来,但是又找不出错误,往往是拼写错误可能是很小的拼写错误,很难看出,或者多了一个空格,比如在配置路由的时候'URL_ROUTER_ON '=true,这样设置就会错误, ...

随机推荐

  1. 我也谈javascript闭包

    1.什么是闭包呢?Whenever you see the function keyword within another function, the inner function has acces ...

  2. 1.2 selenium IDE录制脚本

    1.打开Firefox浏览器中 selenium IDE

  3. Tree of Life (easy)

    Tree of Life (easy) Heidi has finally found the mythical Tree of Life – a legendary combinatorial st ...

  4. c语言字符串转OC字符串

    // 如果把c语言字符串转OC字符串,@(C字符串) char *c = "abc"; NSLog(@"%@", @(c));

  5. java war 打包、解压命令

    经常将工程打包成war包,打包如下: // 将当前目录打包成war包 jar cvf temp.war . 命令格式: java cvf 打包文件名称 要打包的目录 打包文件保存路径 解压自然就是: ...

  6. POJ 3254 Corn Fields(状态压缩)

    一道状态压缩的题,错了好多次....应该先把满足的情况预处理出来 #include<iostream> #include<cstdio> #include<cstring ...

  7. Sybase数据库的分页功能

    项目中需要用到Sybase数据库的分页功能,想尽各种办法都没有成功,最后用如下的存储过程成功实现功能,记录备忘. ),@start int, @pageSize int as begin declar ...

  8. 随机获取部分List<Object>集合

    随机返回list对象 /** * 返回随机List * @param list 备选 * @param selected 备选数量 * @return */ public List getRandom ...

  9. Spring MVC 与ExtJS完美集成

    http://blog.csdn.net/q262800095/article/details/12021191 http://www.jb51.net/article/25267.htm

  10. php script 的生命周期

    原文地址:https://support.cloud.engineyard.com/hc/en-us/articles/205411888-PHP-Performance-I-Everything-Y ...