ThinkPHP--CURD 操作

一.数据创建

在数据库添加等操作之前,我们首先需要对数据进行创建。何为数据创建,就是接受提

交过来的数据,比如表单提交的POST(默认)数据。接受到数据后,还可以对数据进行有

效的验证、完成、生成等工作。

index.htnl

<meta charset="UTF8">
<form method ="post" action="http://localhost/php004/Home/User/create">
   <p>用户:<input type="text" name="user" /></p>
   <p>邮箱:<input type="text" name="email"/></p>
  
   <input type="submit" value="提交" />
</form>

 //根据表单提交的POST数据,创建数据对象

$user = M('User');var_dump($user->create());

PS:这里create()方法就是数据创建,数据的结果就是提交的POST数据的键值对。

特别注意的是:提交过来的字段和数据表字段是对应的,否则无法解析。

<?php
namespace Home\Controller;
use Think\Controller;



class UserController extends Controller {
    public function index(){
        $this->display();
    }
    public function create(){
        $user = M('User');
        var_dump($user->create());
    }
    
  
}
    

//通过数组手工获取数据,覆盖提交的

$user= M('User');

$data['user'] = $_POST['user'];

$data['email'] = $_POST['email'];

$data['date'] = date('Y-m-d H:i:s'); //和数据表对应,否则无效var_dump($user->create($data));

//通过对象手工获取数据,覆盖提交的

$user= M('User');

$data= new \stdClass();

$data->user = $_POST['user'];

$data->email =$_POST['email'];$data->date =date('Y-m-d H:i:s'); var_dump($user->create($data)); 

//默认是$_POST,传递$_GET修改

$user = M('User'); var_dump($user->create($_GET));//<form method ="get"

create()方法可以传递第二个参数,将要操作的模式,有两种:Model::MODEL_INSERT

和Model::MODEL_UPDATE,即新增和修改。当没有指定的时候,系统会根据数据源是否包

含主键来自动判断,如果包含主键,则就是修改操作。

//设置将要新增操作

$user= M('User');

var_dump($user->create($_POST, Model::MODEL_INSERT));

create()方法的内部工作分为9步:

1.获取数据源(默认是POST

2.验证数据合法性(非数据或对象会过滤),失败则返回false

3.检查字段映射;

4.判断数据状态(新增还是修改);

5.数据自动验证,失败则返回false

6.表单令牌验证,失败则返回false

7.表单数据赋值(过滤非法字段和字符串处理);

8.数据自动完成;

9.生成数据对象(保存在内存)。

create()方法可以配合连贯操作配合数据创建,支持的连贯操作有:

1.field,用于定义合法的字段;

2.validate,用于数据自动验证;

3.auto,用于数据自动完成;

4.token,用于令牌验证。

//限制可操作的字段

$user= M('User');

var_dump($user->field('user')->create());//只显示user

//在模型类里限制字段 //控制器用大D 

class UserModel extends Model { protected $insertFields = 'user'; protected $updateFields= 'user'; }



二.数据写入

数据写入使用的是add()方法。

//新增一条数据

$user= M('User');

$data['user'] = '名字';

$data['email'] = '[email protected]';

$data['date'] =date('Y-m-d H:i:s'); $user->add($data);

//结合create()方法

index.htnl

<meta charset="UTF8">
<form method ="post" action="http://localhost/php004/Home/User/add">
   <p>用户:<input type="text" name="user" /></p>
   <p>邮箱:<input type="text" name="email"/></p>
  
   <input type="submit" value="提交" />
</form>


$user= M('User');

$data= $user->create();//create交给data 再把时间交个$data

$data['date'] = date('Y-m-d H:i:s');

$user->add($data);


add()方法支持的连贯操作有:1.table,定义数据表名称;

2.data,指定要写入的数据对象;

3.field,定义要写入的字段;

4.relation,关联查询;

5.validate,数据自动验证;

6.auto,数据自动完成;

7.filter,数据过滤;

8.scope*,命名范围;

9.bind,数据绑定操作;

10.token,令牌验证;

11.commentSQL注释;

//使用data连贯方法

$user= M('User');

$data= $user->create();

$data['date'] =date('Y-m-d H:i:s'); $user->data($data)->add();

//data连贯方法 支持字符串、数组、对象

$user= M('User');

$data= 'user=小明&[email protected]&date='.date('Y-m-d H:i:s');$user->data($data)->add();





猜你喜欢

转载自blog.csdn.net/clearloveyt/article/details/80331284