thinkphp中data方法
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();
thinkphp中data方法的更多相关文章
- ThinkPHP中U方法与url的四种访问模式
ThinkPHP中U方法的用处主要是完成对url地址的组装,在模板中使用U方法而不是固定写死URL地址的好处在于,一旦你的环境变化或者参数设置改变,你不需要更改模板中的任何代码.在模板中的调用格式需 ...
- thinkPHP中session()方法用法详解
本文实例讲述了thinkPHP中session()方法用法.分享给大家供大家参考,具体如下: 系统提供了Session管理和操作的完善支持,全部操作可以通过一个内置的session函数完成. 用法 ? ...
- thinkphp中F方法
我们已经了解了ThinkPHP中的S方法的用法,F方法其实是S方法的一个子集功能,仅用于简单数据缓存,并且只能支持文件形式,不支持缓存有效期,因为采用的是PHP返回方式,所以其效率较S方法较高,因此我 ...
- thinkphp中field方法
hinkPHP的CURD操作中有很多非常实用的方法,从这篇开始,我们会为大家一一介绍. 首先为大家介绍下field方法的用法.field属于模型的连贯操作方法之一,主要目的是标识要返回或者操作的字段, ...
- thinkPHP中_initialize方法实例分析
子类的_initialize方法自动调用父类的_initialize方法. 而php的构造函数construct,如果要调用父类的方法,必须在子类构造函数显示调用parent::__construct ...
- ThinkPHP中create()方法自动验证表单信息
自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证. 原理: create()方法收集表单($_POST)信息并返回,同时触发表单自动验证 ...
- 关于ThinkPhp中getField方法存在的问题
在ThinkPhp中我们可以通过以下方式获取数据库数据 query:直接执行SQL查询操作 find:查询单选数据集 getField查询字段值 select:查询数据集 其他...... 但今天 ...
- 对 jQuery 中 data 方法的误解
一直以来都认为新版本中 data 是调用 dataset 实现的,对于低版本IE则采用 getAttribute其实一直是我误解了,也不知道最初这个想法是怎么来的.难道我被盗梦了? 今天 谢亮 兄弟和 ...
- thinkphp中limit方法
limit方法也是模型类的连贯操作方法之一,主要用于指定查询和操作的数量,特别在分页查询的时候使用较多.ThinkPHP的limit方法可以兼容所有的数据库驱动类的. 用法 限制结果数量 例如获取满足 ...
随机推荐
- dp乱写3:环形区间dp(数字游戏)
状态: fmax[i,j]//表示前i个数分成j个部分的最大值 fmin[i,j]//表示前i个数分成j个部分的最小值 边界:fmax[i,1]:=(sum[i] mod 10+10) mod 10( ...
- 【bzoj1030】 JSOI2007—文本生成器
http://www.lydsy.com/JudgeOnline/problem.php?id=1030 (题目链接) 题意 给出$n$个单词,问有多少个长度为$m$的文本中至少包含一个单词. Sol ...
- Delphi 的内存操作函数(5): 复制内存
MoveMemory.CopyMemory 的功能类似, 都是复制内存, 都是调用 Move 过程; MoveMemory.CopyMemory 操作指针; Move 操作实体. 还要注意, 它们的参 ...
- python的类的 静态属性 类方法 静态方法
一.静态属性 静态属性说的就是数据属性 1.定义一个房间的类,求下这个房间的面积 class Room: def __init__(self,name,ower,width,length,heigh) ...
- Hadoop生态圈-Kafka的本地模式部署
Hadoop生态圈-Kafka的本地模式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Kafka简介 1>.什么是JMS 答:在Java中有一个角消息系统的东西,我 ...
- SQL记录-PLSQL集合
PL/SQL集合 集合是一个有序组具有相同的数据类型的元素.每个元素进行标识的唯一标表示其在集合中的位置. PL/SQL提供了三种集合类型: 索引表或关联数组 嵌套表 可变大小的数组或变长数组 Ora ...
- Spring MVC 中 @ModelAttribute 注解的妙用
Spring MVC 中 @ModelAttribute 注解的妙用 Spring MVC 提供的这种基于注释的编程模型,极大的简化了 web 应用的开发.其中 @Controller 和 @Rest ...
- html5 canvas贝塞尔曲线篇(上)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- java7,java8 中HashMap和ConcurrentHashMap简介
一:Java7 中的HashMap 结构: HashMap 里面是一个数组,然后数组中每个元素是一个单向链表.链表中每个元素称为一个Entry 实例,Entry 包含四个属性:key, value, ...
- iOS 根据生日得到生肖,星座,年龄的算法
根据用户生日,得到相应的年龄,星座和生肖.有的项目中可能会用到,贴出来共享. 得到年龄,这个很简单了: - (void)getAgeWith:(NSDate*)birthday{ //日历 NSCal ...