ThinkPHP完整项目教程的第50课,模型的自动完成

作者:admin     字体:[增加 减小]    类型:原创
ThinkPHP在进行数据库的插入与更改时,可以自动完成,下面详细介绍,有需要的朋友可以参考一下。

在Model类定义$_auto属性,可以完成数据自动处理功能,用来处理默认值、数据过滤以及其他系统写入字段。$_auto属性是由多个填充因子组成的数组

填充因子格式:

array(填充字段,填充内容,[填充条件,附加规则])

说明 ThinkPHP模型自动完成的参数说明

示例:

protected $_auto = array ( 
    array('status','1'),  // 新增的时候把status字段设置为1
    array('password','md5',1,'function') , // 对password字段在新增的时候使md5函数处理
    array('name','getName',1,'callback'), // 对name字段在新增的时候回调getName方法
    array('create_time','time',2,'function'), // 对create_time字段在更新的时候写入当前时间戳
);

使用自动填充可能会覆盖表单提交项目。其目的是为了防止表单非法提交字段。使用Model类的create方法创建数据对象的时候会自动完成表单数据处理。和自动验证一样,自动完成机制需要使用create方法才能生效。并且,也可以在操作方法中动态的更改自动完成的规则。

$auto = array ( 
    array('password','md5',1,'function') // 对password字段在新增的时候使md5函数处理
);
$User-> setProperty("_auto",$auto);
$User->create();

动态设置自动完成规则

还可以使用auto方法动态设置自动完成规则,例如:

$this->auto($auto)->create();

其中$auto变量的规范_auto属性的定义规则一致,而且还可以支持函数调用(由于PHP本身的限制,在类的属性定义中不能调用函数)。

通过这一改进,以前需要支持数据自动完成,必须定义模型类的情况已经不再出现,你完全可以通过M方法实例化模型类后使用动态设置完成自动完成操作。

不知不觉,我们的ThinkPHP完整项目教程已经讲到第50课了,希望大家再接再厉,争取学完。