先明白create方法的用处,是入库前对数据的处理。
直接上create方法的实例:
- // 实例化User模型
- $User = M('User');
- // 根据表单提交的POST数据创建数据对象
- $User->create();
- // 把创建的数据对象写入数据库
- $User->add();
三行代码就可以完成入库操作。
其中create默认的是提取post的数据,如果要对指定数据进行处理:
- $data['name'] = 'ThinkPHP';
- $data['email'] = '[email protected]';
- $User->create($data);
create方法的工作流程:
1.获取数据源(默认是POST数组)
2.验证数据源合法性(非数组或者对象会过滤)
3.检查字段映射
4.判断提交状态(新增或者编辑 根据主键自动判断)
5.数据自动验证
6.表单令牌验证
7.表单数据赋值(过滤非法字段和字符串处理)
8.数据自动完成
9.生成数据对象(保存在内存)
create方法能自动识别是新增或修改,判断方法就是根据提交的数据是否有表主键,所以可以灵活运用这一点,比如下面例子:
- public function save(){
- $users = D('users');
- if(!$users -> create()){
- // 如果创建失败 表示验证没有通过 输出错误提示信息
- $this->error($users ->getError());
- }else{
- if(I('post.id')){
- $users -> save();
- $this->success('修改成功',U('index'));
- }else{
- $users -> add();
- $this->success('添加成功',U('index'));
- }
- }
- }