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
    : 在更新之后 或 之前, 根据数据做一些操作 (如: 重新计算分类文章总数)

版权声明:本文为mr-amazing原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/mr-amazing/p/4933760.html