TP入门第七天

Trace信息无法显示,因为信息需要显示在body体内

1、创建数据

我们在phpaction里面当然也可以使用$_POST以及$_GET获取变量,而TP提供了更加便捷的方法。Create方法创建的数据对象是保存在内存中,并没有实际写入到数据库中,直到使用add或者save方法才会真正写入数据库。比如我们提交了表单里面很多数据如果我们都用$_POST或者$_GET获取会把我们给搞疯掉的!而create会自动创建数据。我们直接用add或者save就可以保存到数据库(有人问,那数据库中的信息和提交的如何一一对应?)在进行add或者save操作的时候,数据表中不存在的字段以及非法的数据类型(例如对象、数组等非标量数据)是会自动过滤的,不用担心非数据表字段的写入导致SQL错误的问题。

所以,你提交的表单中需要设置name要和表中字段对应才能用create创建数据

(那岂不暴漏了表中字段信息?TP考虑到了,如果想隐藏字段信息可以看下面信息)

2、字段映射(官方解释)

ThinkPHP的字段映射功能可以让你在表单中隐藏真正的数据表字段,而不用担心放弃自动创建表单对象的功能,假设我们的User表里面有usernameemail字段,我们需要映射成另外的字段,定义方式如下:

Class UserModel extends Model{

protected $_map = array(

‘name’           =>’username’, //把表单中name映射到数据表的username字段

‘mail’             =>’email’, //把表单中的mail映射到数据表的email字段

);

}

这样,在表单里面就可以直接使用namemail名称作为表单数据提交了。

同理可以显示的时候同样使用字段映射,这个时候需要用到处理方式是调用Model类的parseFieldsMap方法。$User = M(‘User’);

$data = $User->find(3);

这个时候取出的data数据包含的是实际的usernameemail字段,为了方便便表单输出,我们需要处理成字段映射显示在表单中,就需要使用下面的代码处理:

$data = $User->parseFieldsMap($data);这样一来,data数据中就包含了namemail字段数据了,而不再有usernameemail字段数据了。

3、连贯操作

(具体内容参考手册,在后面使用到会做简单讲解)

4、CURD操作(具体详细内容参考手册)

ThinkPHP提供了灵活和方便的数据操作方法,对数据库操作的四个基本操作(CURD):创建、更新、读取和删除的实现是最基本的,也是必须掌握的,在这基础之上才能熟悉更多实用的数据操作方法。CURD操作通常是可以和连贯操作配合完成的。

一、创建操作(Create

ThinkPHP中使用add方法新增数据到数据库(而并不是create方法)。

add 写入(新增)数据到数据库
用法 add($data=”,$options=array(),$replace=false)
参数 data(可选):要新增的数据,支持数组和对象,如果留空取当前数据对象options(可选):操作表达式,通常由连贯操作完成,默认为空数组

replace(可选):是否允许写入时更新,默认为false(个别数据库支持)

回调接口 写入前 _before_insert(&$data,$options)写入成功 _after_insert($data,$options)
返回值 如果数据非法或者查询错误则返回false如果是自增主键 则返回主键值,否则返回1
相关方法 通常和datacreate方法配合使用

二、读取数据(Read

ThinkPHP中读取数据的方式很多,通常分为读取数据和读取数据集。

读取数据集使用select方法(新版已经废除原来的findall方法):读取数据的操作其实和数据集的类似,select可用的所有连贯操作方法也都可以用于find方法,区别在于find方法最多只会返回一条记录,因此limit方法对于find查询操作是无效的。

三、更新数据(Update

ThinkPHP中使用save方法更新数据库,并且也支持连贯操作的使用。

四、删除数据(Delete

ThinkPHP中使用delete方法删除数据库中的记录。

Tagged , , , , . Bookmark the permalink.

Comments are closed.