TP入门第七天

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

1、创建数据

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

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

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

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

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

Class UserModel extends Model{

protected $_map = array(

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

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

);

}

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

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

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

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

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

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

相关方法

通常和data、create方法配合使用

二、读取数据(Read)

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

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

三、更新数据(Update)

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

四、删除数据(Delete)

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏思考的代码世界

Python基础学习09天

18060
来自专栏最高权限比特流

Servlet详细教程

32540
来自专栏CDN及云技术分享

GDB实现原理和使用范例

这篇文章为了让你深入了解gdb的工作原理,以及如何在linux环境下使用强大的gdb调试程序功能。

1K10
来自专栏Core Net

ASP.NET Core 2.0 : 七.一张图看透启动背后的秘密

36950
来自专栏IMWeb前端团队

hapi vs. express [1] —— 路由

hapi vs. express [1] —— 路由 前言 express 与 hapi 是两个基于 nodejs 的 web server 开发框架,它们由于...

24050
来自专栏xcywt

《Linux命令行与shell脚本编程大全》第十一章 构建基本脚本

11.1使用多个命令 $date;who   //  命令列表,加入分号就可以,这样会依次执行。参见5.2.1节 注意区分$(date;who),这个是进程列表...

21770
来自专栏轻量级微服务

微服务下跨语言 RPC 实现

目前主流的 Java 开发框架 Spring Boot,为了更方便集成 gRPC,自己开发了 spring-boot-starter-grpc,仅需简单的几行配...

27630
来自专栏北京马哥教育

Linux自动化运维工具之ansible(二)

糖豆贴心提醒,本文阅读时间8分钟 YAML简介 YAML是一个可读性高的用来表达资料序列的格式。 YAML参考了其他多种语言,包括:XML、C语言、Pytho...

28560
来自专栏前端布道

MongoDB初识

什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。 ...

39580
来自专栏我爱编程

Day15进程和线程

多进程 multiprocessing multiprocessing模块提供了一个Process类来代表一个进程对象,下面的例子演示了启动一个子进程并等待其结...

29350

扫码关注云+社区

领取腾讯云代金券