数字化技能提升教程,数字化时代生存宝典

数字化百科 / 词条 / ThinkPHP开发指南-模型之创建数据

ThinkPHP开发指南-模型之创建数据

查看全部词条命名空间:Main

导航:上一页

在进行数据操作之前,我们往往需要手动创建需要的数据,例如对于提交的表单数据:

// 获取表单的POST数据

PHP代码


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

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

// 更多的表单数据值获取

……

然而ThinkPHP可以帮助你快速地创建数据对象,最典型的应用就是自动根据表单数据创建数据对象,这个优势在一个数据表的字段非常之多的情况下尤其明显。

很简单的例子:

// 实例化User模型

PHP代码


$User->create();

// 把创建的数据对象写入数据库

PHP代码


$User->add();

Create方法支持从其它方式创建数据对象,例如,从其它的数据对象,或者数组等

PHP代码

$data['name'] = 'ThinkPHP';

$data['email'] = 'ThinkPHP@gmail.com';

$User->create($data);


甚至还可以支持从对象创建新的数据对象

// 从User数据对象创建新的Member数据对象

PHP代码


$User = M("User");

$User->find(1);

$Member = M("Member");

$Member->create($User);

而事实上,create方法所做的工作远非这么简单,在创建数据对象的同时,完成了一些很有意义的工作,包括:


  • 支持多种数据源

  • 令牌验证

  • 数据自动验证

  • 字段映射支持

  • 字段类型检查

  • 数据自动完成


因此,我们熟悉的令牌验证、自动验证和自动完成(我们会在后面看到相关的用法)功能,其实都必须通过create方法才能生效。Create方法创建的数据对象是保存在内存中,并没有实际写入到数据库中,直到使用add或者save方法。如果只是想简单创建一个数据对象,并不需要完成一些额外的功能的话,可以使用data方法简单的创建数据对象。

使用如下

// 实例化User模型

PHP代码


$User = M('User');

// 创建数据后写入到数据库

PHP代码

$data['name'] = 'ThinkPHP';

$data['email'] = 'ThinkPHP@gmail.com';

$User->data($data)->add();


使用data方法创建的数据对象不会进行自动验证和过滤操作,请自行处理。但在进行add或者save操作的时候,数据表中不存在的字段以及非法的数据类型(例如对象、数组等非标量数据)是会自动过滤的,不用担心非数据表字段的写入导致SQL错误的问题。

category:ThinkPHP