ThinkPHP使用技巧经验总结
2015-11-03 17:05
681 查看
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层里面有几个很有用的方法并没有出现在手册里, 下面我列举一些.
![](http://yun.topthink.com/Uploads/Editor/2014-09-17/541952e8787c2.jpg)
1. _after_find 和 _after_select:查询成功的回调方法
用法:
在自定义的model中重写
这样在使用的时候, 你用
$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
: 在更新之后 或 之前, 根据数据做一些操作 (如: 重新计算分类文章总数)
在往数据表中添加数据时调用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层里面有几个很有用的方法并没有出现在手册里, 下面我列举一些.
![](http://yun.topthink.com/Uploads/Editor/2014-09-17/541952e8787c2.jpg)
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
: 在更新之后 或 之前, 根据数据做一些操作 (如: 重新计算分类文章总数)
相关文章推荐
- php qrcode示例
- YII2设置路由访问,美化url
- phpexcel 导出数据
- 浅谈 PHP 中的多种加密技术及代码示例
- PHP学习(一)
- vsftp服务的简介与配置
- Ubuntu 14.04 安装TFTP server
- PHP之math_pow
- PHP学习(二)添加数据
- 【专访 PHP 之父】PHP7 性能翻倍关键大揭露
- PHP 删除文件夹下所有文件
- PHP AJAX JSONP实现跨域请求使用实例
- php实现分页显示
- php empty,isset,is_null比较(差异与异同)
- PHP中的浅复制与深复制
- PHP生成简单计算的验证码,模仿CSDN
- PHP display_errors与error_reporting
- PHP翻页跳转功能实现方法
- php文件使用include时文件打印空行
- php中注册器模式类用法实例分析