标签:
ThinkPHP 模型层提供的数据处理方法,主要用于数据的自
动处理和过滤,使用 create()方法创建数据是会自动完成。
一. 完成规则
自动完成一般通过默认字段写入、安全字段过滤以及业务逻辑的自动处理等。有两种方
式实现自动完成的规则:1.静态方式:在模型类里通过$_auto 属性定义处理规则;2 动态
方式:使用模型类的 auto 方法动态创建自动处理规则。
1 //完成规则 2 array( 3 array(完成字段1,完成规则,[完成条件,附加规则]), 4 array(完成字段2,完成规则,[完成条件,附加规则]), 5 ...... 6 );
完成字段:必填,需要的字段名;
完成规则:必填,配合附加规则完成;
完成条件:可选,具体如下:
1.self::MODEL_INSERT 或 1,新增数据的时候处理(默认);
2.self::MODEL_UPDATE 或 2,更新数据的时候处理;
3.self::MODEL_BOTH 或 3,所有情况均处理。
附加规则:可选,配合完成规则使用,包括一下规则:
规则 | 说明 |
function | 函数完成,定义的验证规则是一个函数名 |
callback | 方法完成,定义的验证规则是当前模型类的一个方法 |
field | 用其他字段填充,表示填充的内容是一个其他字段的值 |
string | 字符串(默认) |
ignore | 为空则忽略(3.1.2新增) |
二. 静态定义
在模型类里预先定义好该模型的自动完成规则,就是静态定义。
在 Home/controller/UserController.class.php 里插入以下代码:
1 public function add() { 2 $user=D(‘User‘); 3 $data[‘user‘]=‘蜡笔大新‘; 4 $data[‘email‘]=‘bbb@qq.com‘; 5 if($user->create($data)) { 6 $user->add(); 7 } 8 }
注意一下的是: $user->add(); 里不再需要加上$data了否则后面的功能就实现不了了。
然后在 Home/Model/UserModel.class.php 插入以下代码:
1 <?php 2 namespace Home\Model; 3 use Think\Model; 4 5 class UserModel extends Model { 6 protected $_auto = array( 7 array(‘count‘,‘1‘), 8 array(‘user‘,‘sha1‘,3,‘function‘), 9 ); 10 }
这时当执行 Home/controller/UserController.class.php 的add()函数时,添加到数据库的数据中的count下的数值会自动加一,同时user会使用sha1加密,
array(‘user‘,‘sha1‘,3,‘function‘), 中使用了function,当并没有在conmon文件夹下的common下建立function.php,并在其中建立function sha1函数,
是因为sha1加密函数是ThinkPHP自带的,已经封装好了,md5加密方式也是。
还有诸如:
1 array(‘user‘,‘email‘,3,‘field‘),
是把email写入到用户名中。
callback,给用户名加前缀
这时就是当添加用户名到数据库时,给上传的用户名加上前缀
标签:
原文地址:http://www.cnblogs.com/jacson/p/4501175.html