data方法也是模型类的连贯操作方法之一,用于设置当前要操作的数据对象的值,可能大家不太习惯用这个方法,今天来讲解下如何用好data方法。

用法

写操作

通常情况下我们都是通过create方法或者赋值的方式生成数据对象,然后写入数据库,例如:

  1. $Model = D('User');
  2. $Model->create();
  3. // 这里略过具体的自动生成和验证判断
  4. $Model->add();
复制代码

又或者直接对数据对象赋值,例如:

  1. $Model = M('User');
  2. $Model->name = '流年';
  3. $Model->email = 'thinkphp@qq.com';
  4. $Model->add();
复制代码

那么data方法则是直接生成要操作的数据对象,例如:

  1. $Model = M('User');
  2. $data['name'] = '流年';
  3. $data['email'] = 'thinkphp@qq.com';
  4. $Model->data($data)->add();
复制代码

注意:如果我们同时使用create方法和data创建数据对象的话,则后调用的方法有效。

data方法支持数组、对象和字符串,对象方式如下:

  1. $Model = M('User');
  2. $obj = new stdClass;
  3. $obj->name = '流年';
  4. $obj->email = 'thinkphp@qq.com';
  5. $Model->data($obj)->add();
复制代码

字符串方式用法如下:

  1. $Model = M('User');
  2. $data = 'name=流年&email=thinkphp@qq.com';
  3. $Model->data($data)->add();
复制代码

也可以直接在add方法中传入数据对象来新增数据,例如:

  1. $Model = M('User');
  2. $data['name'] = '流年';
  3. $data['email'] = 'thinkphp@qq.com';
  4. $Model->add($data);
复制代码

但是这种方式data参数只能使用数组。

当然data方法也可以用于更新数据,例如:

  1. $Model = M('User');
  2. $data['id'] = 8;
  3. $data['name'] = '流年';
  4. $data['email'] = 'thinkphp@qq.com';
  5. $Model->data($data)->save();
复制代码

当然我们也可以直接这样用:

  1. $Model = M('User');
  2. $data['id'] = 8;
  3. $data['name'] = '流年';
  4. $data['email'] = 'thinkphp@qq.com';
  5. $Model->save($data);
复制代码

同样,此时data参数只能传入数组。

在调用save方法更新数据的时候 会自动判断当前的数据对象里面是否有主键值存在,如果有的话会自动作为更新条件。也就是说,下面的用法和上面等效:

  1. $Model = M('User');
  2. $data['name'] = '流年';
  3. $data['email'] = 'thinkphp@qq.com';
  4. $Model->data($data)->where('id=8')->save();
复制代码

读操作

除了写操作外,data方法还可以用于读取当前的数据对象,例如:

    1. $User = M('User');
    2. $map['name'] = '流年';
    3. $User->where($map)->find();
    4. // 读取当前数据对象
    5. $data = $User->data();

thinkphp data方法的更多相关文章

  1. ThinkPHP CURD方法盘点:data方法

    data方法也是模型类的连贯操作方法之一,用于设置当前要操作的数据对象的值,可能大家不太习惯用这个方法,今天来讲解下如何用好data方法. 用法 写操作 通常情况下我们都是通过create方法或者赋值 ...

  2. thinkphp中data方法

    data方法也是模型类的连贯操作方法之一,用于设置当前要操作的数据对象的值,可能大家不太习惯用这个方法,今天来讲解下如何用好data方法. 用法 写操作 通常情况下我们都是通过create方法或者赋值 ...

  3. thinkphp 创建数据对象之data方法

    创建数据对象:data()方法 1.功能:给模型对象$data赋值,将模型对象转化为数据对象 tip:模型对象与数据对象之间就差一个赋过值的$data; 2.方法:data()其源码如下: tip:源 ...

  4. thinkphp save()方法没有数据,保存失败解决办法

    thinkphp save()方法没有数据保存返回0,保存失败返回false   可以对返回值判断一下就好 $ret = $model->save($data); //var_dump($ret ...

  5. ThinkPHP vendor 方法导入第三方类库

    ThinkPHP 3.2 vendor()方法的深入研究及Phpqrcode的正确扩展 ThinkPHP vendor 方法导入第三方类库 第三方类库 第三方类库指除了 ThinkPHP 框架.应用项 ...

  6. data方法也是模型类的连贯操作方法之一,

    data方法也是模型类的连贯操作方法之一,用于设置当前要操作的数据对象的值. 写操作 通常情况下我们都是通过create方法或者赋值的方式生成数据对象,然后写入数据库,例如: $Model = D(' ...

  7. HTML 5 的自定义 data-* 属性和jquery的data()方法的使用

    人们总喜欢往HTML标签上添加自定义属性来存储和操作数据.但这样做的问题是,你不知道将来会不会有其它脚本把你的自定义属性给重置掉,此外,你这样做也会导致html语法上不符合Html规范,以及一些其它副 ...

  8. 繁星——jquery的data()方法

    今天在看JQuery文档的时候偶然看到了data()方法,觉得挺好用的,这里做个记录. 这个方法用于在元素上存放数据,返回jQuery对象.在文档中提到V1.4.3 新增用法NEW data(obj) ...

  9. 利用jQuery内置的data()方法存储数据

    jQuery提供了内置的data()方法,与DOM元素不同的是,它可以用来存储key/value类型的数据.数据的存储是很容易的: $('#myDiv').data('currentState', ' ...

随机推荐

  1. (一)Python 学习第一天--基础知识,列表

    1. .pyc文件 .pyc文件:在python3中,当模块运行时会自动生成在_pycache_文件夹中,其中c为compiled的缩写. Python是一门现编译后解释的语言,在运行时首先寻找.py ...

  2. C 语言常用方法技巧

    C语言常用方法技巧 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !impor ...

  3. HDU_1542_线段树【扫描线】

    Atlantis Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  4. 在把table表格中的数据导出到Excel的时候,以科学计数法显示位数多的数字时怎么解决?

    sbHtml.AppendFormat("<td> {0}</td>", data[i].IDcard.ToString()); sbHtml.Append ...

  5. eas之列表界面写脚本时如何写sql

    var easNames = JavaImporter();easNames.importPackage(Packages.com.kingdee.bos.dao.query);with(easNam ...

  6. exist not exist 分析

    结果集1 结果集2: 最后连接条件 执行过程: 一行一行遍历结果集1的数据,然后结果集1中的连接条件执行子查询,如果有值返回那么在看是exist  还是not exist 在决定最后的结果集是否要要不 ...

  7. 4.bool组合查询

    主要知识: 学习bool组合查询 bool嵌套     1.搜索发帖日期为2017-01-01,或者帖子ID为XHDK-A-1293-#fJ3的帖子,同时要求帖子的发帖日期绝对不为2017-01-02 ...

  8. 9.2 Socket编程

    远程管理软件和黑客软件大多依赖于Socket来实现特定功能,前几年流行的端口反弹更是把这项技术发挥到了极致. 如前所述,UDP和TCP是网络体系结构的传输层运行的两大重要协议,其中,TCP适用于对效率 ...

  9. ReatEasy+用户指南----第9章@MatrixParam

    转载说明出处:http://blog.csdn.net/nndtdx/article/details/6870391 原文地址 http://docs.jboss.org/resteasy/docs/ ...

  10. [USACO16OPEN]关闭农场Closing the Farm(洛谷 3144)

    题目描述 Farmer John and his cows are planning to leave town for a long vacation, and so FJ wants to tem ...