刚开始接触TP学到CURD部分,在模型中使用自动填充功能碰到点问题
以下是符合自己要求的代码:
class FormModel extends Model{
//定义自动验证
protected $_validate = array(
array('title','require','标题不能为空'),
);
//定义自动完成
protected $_auto = array(
array('create_time','date',1,'function',array('Y-m-d H:i:s')),
);
}
一开始不知道还有第5个格式参数,手册里都没有,心塞(>﹏<。)~
还有不用第5个参数的
class FormModel extends Model{
//定义自动验证
protected $_validate = array(
array('title','require','标题不能为空'),
);
//定义自动完成
protected $_auto = array(
array('create_time','getTime',1,'callback'),
);
protected function getTime(){
$time = time();
$datetime = date("Y-m-d H:i:s",$time);
return $datetime;
}
}
要注意的一点是—>如果是用自己的函数那就要用callback,第二个参数默认当前模块能调用的方法;用function的话第二个参数为函数名,而这个函数可以是PHP自带的,也可以是你自己写的。
- 要使用(Y-m-d H:i:s)的形式,数据库中的create_time字段数据类型要是datetime
protected $_auto = array(
array('time_at','time','1','function'),
);
- 如果使用以上的填充方法,数据库中的create_time字段数据类型要是int
以下附录一下自动填充的规则:
要使用自动填充功能,只需要在对应的 Model类 里面定义 $_auto 属性(由多个验证因子组成的数组)。$_auto 属性是由多个填充因子组成的数组
protected $_auto = array(
array(填充字段,填充内容[,填充条件][,附加规则])
};
填充因子 | 说明 |
---|---|
填充字段 | 必须。需要填充的表单字段,这个字段不一定是数据库字段,也可以是表单的一些辅助字段,例如验证码等。 |
填充内容 | 必须。要对字段自动填充的内容。 |
填充条件 | 可选。包括: 1、Model:: MODEL_INSERT 或者 1 :新增数据时候填充(默认) 2、Model:: MODEL_UPDATE 或者 2 :更新数据时候填充 3、Model:: MODEL_BOTH 或者 3 :全部情况下填充 |
附加规则 | 可选。包括: 1、string:字符串,表示填充内容为字符串(默认) 2、function:使用函数,表示填充的内容是一个函数返回值 3、callback:使用方法,表示填充的内容是一个当前 Model 的方法返回值 4、field:字段,表示填充的内容是一个其他字段的值 5、ignore :为空则忽略(3.1.2新增) |