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. Centos7 Openstack - (第二节)添加认证服务(Keystone)

    Centos7 install Openstack - (第二节)添加认证服务(Keystone) 我的blog地址:http://www.cnblogs.com/caoguo 根据openstack ...

  2. tbType和TypeList操作

    tbType查询数据库后 获得一个DataTable的数据表 数据表是写在内存里面的 可以在这个项目的其他地方去访问它,由于在内存里面 所以访问速度很快 用代码获取它的哪一行的数据供使用 例如 tbB ...

  3. S3C2440中断

    韦东山老师一期中断课程学习: 总结: 程序启动后工作流程,程序从0地址开始执行Reset  --> 重定位  -->ldr pc,=main [绝对跳转到SDRAM中执行main()函数] ...

  4. php省市区三级联动

    效果 步骤 前端:通过ajax请求获取数据,使用了jquery 页面一开始加载所有省份信息 ->当选择省下拉框后触发改变监听时间-change ->当选择市下拉框后触发改变监听时间-cha ...

  5. Appium使用方法说明

    global driver# 元素定位driver.find_element_by_id("id") # id定位driver.find_element_by_name(" ...

  6. Spring 注解注入的几种方式(转)

    平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程 ...

  7. seleniumd对象的操作方法,属性,keys

    这是通过find方法找到的页面元素,此对象提供了多种方法,让我们可以与页面元素进行交互,例如点击.清空. 目录: 1. 方法 2. 属性 3. keys 方法 clear()清空 如果当前元素中有文本 ...

  8. 【Codeforces 4D】Mysterious Present

    [链接] 我是链接,点我呀:) [题意] 要求长度和宽度都严格递增(选择一个序列) 然后你一开始有一个长度和宽度 要求这个一开始所给的长度和宽度能接在你选择的一段连续的长度宽度的开头 (且保持原来的性 ...

  9. noip模拟赛 站军姿

    分析:纯数学题.相离和包含关系的可以很容易算出来答案,相交的话要先求出两个圆的面积,然后减掉中间重叠的部分,这一部分并不能直接求出来,但是可以求出两个扇形的面积,和它们围成的一个四边形的面积,加加减减 ...

  10. CODEVS1079 回家 (最短路)

    真是语死早,题目看了两遍才看懂. 按照题目要求建边,从'Z'开始跑最短路即可. Program CODEVS1079; ..,..] of longint; d:..] of longint; pd: ...