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

用法

写操作

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

$Model = D('User');
$Model->create();
// 这里略过具体的自动生成和验证判断
$Model->add();

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

$Model = M('User');
$Model->name = '流年';
$Model->email = 'thinkphp@qq.com';
$Model->add();

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

$Model = M('User');
$data['name'] = '流年';
$data['email'] = 'thinkphp@qq.com';
$Model->data($data)->add();

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

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

$Model = M('User');
$obj = new stdClass;
$obj->name = '流年';
$obj->email = 'thinkphp@qq.com';
$Model->data($obj)->add();

字符串方式用法如下:

$Model = M('User');
$data = 'name=流年&email=thinkphp@qq.com';
$Model->data($data)->add();

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

$Model = M('User');
$data['name'] = '流年';
$data['email'] = 'thinkphp@qq.com';
$Model->add($data);

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

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

$Model = M('User');
$data['id'] = 8;
$data['name'] = '流年';
$data['email'] = 'thinkphp@qq.com';
$Model->data($data)->save();

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

$Model = M('User');
$data['id'] = 8;
$data['name'] = '流年';
$data['email'] = 'thinkphp@qq.com';
$Model->save($data);

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

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

$Model = M('User');
$data['name'] = '流年';
$data['email'] = 'thinkphp@qq.com';
$Model->data($data)->where('id=8')->save();

读操作

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

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

转载于:https://www.cnblogs.com/chinalorin/p/5883940.html

thinkphp中data方法相关推荐

  1. php调用另一个php文件里的变量的值,thinkphp中一个方法调用另一个步骤的变量

    thinkphp中一个方法调用另一个方法的变量 //实例化上传类 public function upload() { $upload = new Upload(); $upload->maxS ...

  2. php中sisson用法,thinkPHP中session()方法用法详解

    本文实例讲述了thinkPHP中session()方法用法.分享给大家供大家参考,具体如下: 系统提供了Session管理和操作的完善支持,全部操作可以通过一个内置的session函数完成. 用法 s ...

  3. php create()方法,ThinkPHP中create()方法自动验证实例

    ThinkPHP中create()方法自动验证实例2020-06-16 04:24:32 自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验 ...

  4. php大m大d,ThinkPHP中M方法与D方法区别

    [前言] ? ? ? 本文总结下ThinkPHP中M方法与D方法区别,以下均为个人见解.如有误解请指正 ? [主体] (一)个人见解: ? ? ? ?M()方法参数可选,有参数时表示实例化父类模型的同 ...

  5. ThinkPHP中vendor()方法导入第三方类库的用法!ThinkPHP 3.2 vendor()方法的深入研究!

    ThinkPHP vendor 方法导入第三方类库 第三方类库 第三方类库指除了 ThinkPHP 框架.应用项目类库之外的其他类库,一般由第三方系统或产品提供,如 Smarty.Zend 等系统的类 ...

  6. PHP的create方法,Thinkphp中Create方法深入探究

    由于工作原因在thinkPHP的create()方法上遇到了问题,所以跟踪了create(),从而进一步探究了create()方法. 原来create()方法原来有两个参数,本文就此作简要说明,需要的 ...

  7. ThinkPHP中where()方法的使用

    where方法的用法是ThinkPHP查询语言的精髓,也是ThinkPHP ORM的重要组成部分和亮点所在,可以完成包括普通查询.表达式查询.快捷查询.区间查询.组合查询在内的查询操作.where方法 ...

  8. thinkphp中I方法

    概述 正如你所见到的一样,I方法是ThinkPHP众多单字母函数中的新成员,其命名来自于英文Input(输入),主要用于更加方便和安全的获取系统输入变量,可以用于任何地方,用法格式如下: I('变量类 ...

  9. php getfield,ThinkPHP中getField()方法的使用

    //**************************************************************************************** //  getFi ...

最新文章

  1. nodejs报错解决:Error: Can only perform operation while paused. - undefined
  2. ajax调用接口很慢,nodejs 请求接口在高并发下耗时很大,而单个请求非常快
  3. column 对齐排列命令
  4. 巧妙设置Android来方便管理Linux和Windows
  5. [sharepoint]根据用户名获取该用户的权限
  6. stm32 usart 单线半双工串口 DMA发送 最后一个字节发不出来问题
  7. 华为校园招聘Java机试题
  8. Hive 内部表与外部表
  9. Linux内核代码 分析大纲思维导图
  10. ip地址能够什么标识网络中的一台计算机,计算机网络第一学期期末考试模拟练习题(这套卷子上面也会有原题).pdf...
  11. 08. 旋转数组的最小数字(C++版本)
  12. mysql客户端登录方式
  13. jdk1.7 64位官方下载地址
  14. C语言四种swap函数
  15. O(lgn)计算斐波那契数
  16. HTML图片鼠标滑动加边框,鼠标移动到图片上时,用css怎么实现图片加边框效果?...
  17. ios开发之故事板StoryBoard的使用
  18. 路由器的四种配置模式
  19. 【简单算法】计算几月几日是一年的第几天
  20. 华为第十届 关灯计划

热门文章

  1. 404页面设计技巧性分享不容错过!
  2. 网站开发建设过程中所涉及到的技术问题应当如何面对?
  3. 以下关于java的GUI菜单描述_第十九讲 菜单和JavaGUI综合设计
  4. python绘制坐标图_Python绘制主次坐标图
  5. 三星oneui主屏幕费电_都 9012 年了,三星系统还「负优化」吗?
  6. (转载)linux如何设置为低内核启动(降核)
  7. 趣谈网络协议笔记-二(第五讲)
  8. ICMP 隧道——将流量封装进 IMCP 的 ping 数据包中,旨在利用 ping 穿透防火墙的检测...
  9. Fuzzy C Means 算法及其 Python 实现——写得很清楚,见原文
  10. C8-1 复数加减乘除 (100/100 分数)