1.数据创建 2.数据写入 3.数据读取 4.数据更新 5.数据删除

一.数据创建 在数据库添加等操作之前,我们首先需要对数据进行创建。何为数据创建,就是接受提 交过来的数据,比如表单提交的 POST(默认)数据。接受到数据后,还可以对数据进行有 效的验证、完成、生成等工作。

//根据表单提交的POST数据,创建数据对象 $user = M('User'); var_dump($user->create()); PS:这里 create()方法就是数据创建,数据的结果就是提交的 POST 数据的键值对。

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

//通过数组手工获取数据,覆盖提交的 $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)); 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,用于定义合法的字段;  var_dump($user->field('user')->create());

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

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

4.token,用于令牌验证。

//限制可操作的字段 $user = M('User'); var_dump($user->field('user')->create());

//在模型类里限制字段 class UserModel extends Model { protected $insertFields = 'user'; protected $updateFields = 'user'; }

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

//新增一条数据 $user = M('User'); $data['user'] = '李炎恢'; $data['email'] = 'yc60.com@gmail.com'; $data['date'] = date('Y-m-d H:i:s'); $user->add($data);

//结合create()方法 $user = M('User'); $data = $user->create(); $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.comment,SQL 注释; //使用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=星矢&mail=xinshi@qq.com&date='.date('Y-m-d H:i:s'); $user->data($data)->add();

三.数据读取

在之前的课程中,我们已经大量使用了数据读取的功能,比如 select()方法。

结合各 种连贯方法可以实现数据读取的不同要求,支持连贯的方法有:

1.where,查询或更新条件;

2.table,要操作的数据表名称;

3.alias,数据表别名;

4.field,查询字段;

5.order,结果排序;

6.group,查询分组;

7.having,分组再查询;

8.join,多表链接查询;

9.union,合并 SELECT;

10.distinct,取唯一值;

11.lock,锁;

12.cache,缓存;

13.relation,关联查询;

14.result,数据转换;

15.scope,命名范围;

16.bind,数据绑定操作;

17.comment,SQL 注释。

//显示默认第一条数据 $user = M('User'); var_dump($user->find());

//可以传递数字参数,AR 模式

//显示默认所有数据 $user = M('User'); var_dump($user->select());

//可以传递数组形式的 SQL //获取第一条user字段的值 $user = M('User'); var_dump($user->getField('user'));

//获取所有user字段的值 $user = M('User'); var_dump($user->getField('user',true));

//传递多个字段,获取所有 $user = M('User'); var_dump($user->getField('user,email'));  //重复的没有了

//id冒号分隔 $user = M('User'); var_dump($user->getField('id,user,email',':'));

//限制2条数据 $user = M('User'); var_dump($user->getField('id,user,email',2));

四.数据更新

数据更新使用的方法是 save()方法,主要是对数据的修改操作。

//修改第一条数据 $user = M('User'); $data['user'] = '蜡笔大新'; $data['email'] = 'daxin@qq.com'; $map['id'] = 1; $user->where($map)->save($data);

//成功后返回 1,否则 0

//默认主键为条件 $user = M('User'); $data['id'] = 1; $data['user'] = '蜡笔小新'; $data['email'] = 'xiaoxin@163.com'; $user->save($data);

数据更新的 save()方法支持的连贯方法有:

1.where,查询或更新条件;

2.table,要操作的数据表名称;

3.alias,数据表别名;

4.field,查询字段;

5.order,结果排序;

6.lock,锁;

7.relation,关联查询;

8.scope,命名范围;

9.bind,数据绑定操作;

10.comment,SQL 注释。

//结合create() $user = M('User'); $user->create();

//POST必须包含主键 $user->save();

//修改某一个值 $user = M('User'); $map['id'] = 1; $user->where($map)->setField('user', '蜡笔大新');

//统计累计,累加累减 $user = M('User'); $map['id'] = 1; $user->where($map)->setInc('count',1);

//累加,setDec 累减

五.数据删除

数据删除使用的方法是 delete()方法。

//直接删除主键(id=17) $user = M('User'); $user->delete(17);

//根据ID来删除 $user = M('User'); $map['id'] = 16; $user->where($map)->delete();

//批量删除多个 $user = M('User'); $user->delete('1,3,5');

//删除count为0且按时间倒序的前五个 $user = M('User'); $map['count'] = 0; $user->where($map)->order(array('date'=>'DESC'))->limit(5)-> delete();

//删除所有数据,谨慎 $user = M('User'); echo $user->where('1')->delete();

delete()方法支持的连贯操作有: 1.where,查询或更新条件; 2.table,要操作的数据表名称; 3.alias,数据表别名; 4.order,结果排序; 5.lock,锁; 6.relation,关联查询; 7.scope,命名范围; 8.bind,数据绑定操作; 9.comment,SQL 注释。

六.ActiveReocrd 模式

这种模式最大的特别就是简化了 CURD 的操作,并且采用对象化的操作方式,便于使用 和理解。

//添加一条数据 $user = M('User'); $user->user = '火影忍者'; $user->email = 'huoyin@qq.com'; $user->date = date('Y-m-d H:i:s'); $user->add();

//结合create $user = M('User'); $user->create(); $user->date = date('Y-m-d H:i:s'); $user->add();

//找到主键为4的值 $user = M('User'); var_dump($user->find(4));

//查找user=蜡笔小新的记录 $user = M('User'); var_dump($user->getByUser('蜡笔小新'));

//输出user echo $user->user;

//通过主键查询多个 $user = M('User'); var_dump($user->select('1,2,3'));

//修改一条数据 $user = M('User'); $user->find(1); $user->user = '蜡笔老新'; $user->save();

//删除当前找到的数据 $user = M('User'); $user->find(11); $user->delete();

//删除主键为10的数据 $user = M('User'); $user->delete(10);

//删除主键为10,11的数据 $user = M('User'); $user->delete('10,11');

七.字段映射

字段映射可以将表单里的 name 名称对应到数据表里的字段,这样防止系统自动屏蔽掉 不对应的 POST 值。

//字段映射 protected $_map = array( 'xingming'=>'user', 'youxiang'=>'email', );

//字段映射获取 $user = D('User'); var_dump($user->create());

thinkPHP--CURD操作的更多相关文章

  1. ThinkPHP CURD 操作

    Thinkphp CURD操作php中实例还对象即可操作 (目录) 1.Add 1 调式程序 3 调出显示页面Trace信息 3 Dump 的含义 4 2.数据库查询 4 1.直接使用字符串进行查找 ...

  2. thinkphp 连接数据库 & 实例化模型操作 (下接thinkphp CURD 操作)/慕课

    7.1 连接数据库 (06:15) 1 7.2实例化模型 1 1.实例化基础模型 2 2. 实例化用户自定义模型 2 问题 2 3. 实例化公共模型 4 4. 实例化空模型 7    7.1 连接数据 ...

  3. ThinkPHP CURD mysql操作

    ThinkPHP CURD操作 ThinkPHP提供了灵活和方便的数据操作方法,对数据库操作的四个基本操作(CURD):创建.更新.读取和删除的实现是最基本的,也是必须掌握的,在这基础之上才能熟悉更多 ...

  4. thinkphp对mysql的CURD操作

    利用thinkphp(3.2.3)来操作数据库,首先要连接数据库.我们需要对某数据库写一个配置文件,thinkphp会根据该配置文件自动连接上数据库.而model文件就不用自定义,内置的即可解决问题. ...

  5. ThinkPHP CURD返回结果参考

    ThinkPHP CURD返回结果参考: 1)查询$table->find() ##返回一条记录,是一个关联数组,是一维数组.$table->select() ##返回第一维是索引数组,第 ...

  6. ThinkPHP CURD方法盘点:field方法

    ThinkPHP的CURD操作中有很多非常实用的方法,从这篇开始,我们会为大家一一介绍. 首先为大家介绍下field方法的用法.field属于模型的连贯操作方法之一,主要目的是标识要返回或者操作的字段 ...

  7. ThinkPHP 数据库操作(五) : 存储过程、数据集、分布式数据库

    存储过程 5.0支持存储过程,如果我们定义了一个数据库存储过程 sp_query ,可以使用下面的方式调用: $result = Db::query('call sp_query(8)'); 返回的是 ...

  8. ThinkPHP 数据库操作(三) : 查询方法、查询语法、链式操作

    查询方法 条件查询方法 where 方法 可以使用 where 方法进行 AND 条件查询: Db::table('think_user') ->where('name','like','%th ...

  9. ThinkPHP CURD方法中field方法详解

    导读:ThinkPHP CURD方法的field方法属于模型的连贯操作方法之一,主要目的是标识要返回或者操作的字段,可以用于查询和写入操作. 1.用于查询在查询操作中field方法是使用最频繁的.$M ...

  10. TP中CURD操作

    CURD操作 CURD操作也就是模型操作数据表的基本操作.C(Create).U(Update).R(Read).D(Delete)操作就是增删改查操作. 6.1.增加操作 回想一下在mysql中增加 ...

随机推荐

  1. SQLServer count函数、cross apply和outer apply、

    1.COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入)2.COUNT(*) 函数返回表中的记录数 select *   from TABLE_1 T1 outer ap ...

  2. ASP.Net上传大文件解决方案之IIS7.0下的配置

    开源的Brettle.Web.NeatUpload.在公司IIS6.0使用正常,但是在Windows 2008 server IIS7上使用不正常.在网上看到一个解决办法但是没有效果 IIS 7 默认 ...

  3. 【STM32F4】读取芯片ID和芯片Flash Size

    首先声明,手册上给出的FlashSize地址是错误的,正确的应该是0x1FFF7A20,取高16位.确切说应该是(0x1FFF7A23,0x1FFF7A22两个字节), 芯片的这96位ID是产品唯一身 ...

  4. Python的第四天

    函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函 ...

  5. Python 网络编程(二)

    Python 网络编程 上一篇博客介绍了socket的基本概念以及实现了简单的TCP和UDP的客户端.服务器程序,本篇博客主要对socket编程进行更深入的讲解 一.简化版ssh实现 这是一个极其简单 ...

  6. 理解Condition的用法

    这个示例中BoundedBuffer是一个固定长度的集合,这个在其put操作时,如果发现长度已经达到最大长度,那么会等待notFull信号,如果得到notFull信号会像集合中添加元素,并发出notE ...

  7. java.lang.NoClassDefFoundError 解决方案

    http://stackoverflow.com/questions/9870995/android-java-lang-noclassdeffounderror 像网络了上说的一般这种问题是 运行时 ...

  8. tomcat结合nginx使用小结

    相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额.那究竟它有什么作用呢?可能很多人未必了解. 说到反向代理,可能很多人都听说,但具体什么是反向代理,很多人估计就不清楚了 ...

  9. php 运行脚本shell

    F:\phpStudy\php53\php.exe -f F:\phpStudy\WWW\qh\qh.php /usr/local/php/bin/php -f test.php Usage: php ...

  10. 【转】日期工具类DateUtils

    转自csdn,原作者:jzhf2012 package date.util; import java.text.ParseException; import java.text.SimpleDateF ...