add方法返回主键(id)的值
在往数据表中添加数据时调用add方法,默认返回值就是刚添加的id值,就不用再去查询了.
save方法返回值的判断
在修改数据时,若是修改为功返回的是被修改的记录数0,1,2,3......
注意:如下几种状况返回 false,因此判断更新失败应使用 if(false === $this->save())
(1)更新的数据为空
(2)_before_update()方法返回false
(3)没有任何更新条件(没有定义where()里的条件,或者保存的数据里没有主键的值)
查询后置方法详解
如_after_select,_after_insert,_after_update,_after_delete,_after_find等
巧妙地利用这些方法能够简化开发
用_after_select(&$result,$options)举例:
参数:$result,这是select出的结果数组。注意这里是一个引用传参,也就是说咱们能够直接改变传递过来的值而不须要返回
$options,这是查询的条件,也就是where()里面的条件
假如你查询出的数据有time这一字段,而且是以int型保存的,那么能够在这个方法里进行时间格式化的操做html
这样就不须要每次在模板上显示的时候,再用函数来处理了
一样地,能够用_after_insert来代替关联操做,在新增完一条数据后再根据参数更新一些关联的数据
固然,除了后置方法,还有前置方法。能够用来代替一些复杂的数据验证或者进行数据的预处理,相似于自动完成和自动验证sql
最后,有几点须要注意的:1,这些方法都是必须写在model里面的
2,这些方法所接收的参数,有些是引用传参,有些是传值,得注意区分。具体可参考手册
3,在后置方法里不须要返回值。而前置方法里能够返回 false 来阻止进行下一步的操做
打印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的方法数组