ThinkPHP CURD方法之data方法详解


Posted in PHP onJune 18, 2014

ThinkPHP CURD方法的data方法也是模型类的连贯操作方法之一,用于设置当前要操作的数据对象的值,很多开发人员却并不太习惯用这个方法,今天来讲解下如何用好data方法。

具体用法如下:

1.写操作

通常情况下我们都是通过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();

2.读操作

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

$User = M('User');
$map['name'] = '流年';
$User->where($map)->find();
 // 读取当前数据对象
$data = $User->data();
PHP 相关文章推荐
php防攻击代码升级版
Dec 29 PHP
php中使用preg_match_all匹配文章中的图片
Feb 06 PHP
对淘宝URL中ID提取的PHP代码
Sep 01 PHP
PHP SPL使用方法和他的威力
Nov 12 PHP
PHP判断远程图片是否存在的几种方法
May 04 PHP
浅谈PHP接收POST数据方式
Jun 05 PHP
php实现给一张图片加上水印效果
Jan 02 PHP
Yii2 ActiveRecord多表关联及多表关联搜索的实现
Jun 30 PHP
PHP实现递归目录的5种方法
Oct 27 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
Nov 07 PHP
php array_values 返回数组的值实例详解
Nov 17 PHP
tp5(thinkPHP5框架)使用DB实现批量删除功能示例
May 28 PHP
ThinkPHP CURD方法之order方法详解
Jun 18 #PHP
ThinkPHP CURD方法之table方法详解
Jun 18 #PHP
ThinkPHP CURD方法之page方法详解
Jun 18 #PHP
ThinkPHP CURD方法之limit方法详解
Jun 18 #PHP
ThinkPHP CURD方法之where方法详解
Jun 18 #PHP
ThinkPHP Mobile使用方法简明教程
Jun 18 #PHP
ThinkPHP的I方法使用详解
Jun 18 #PHP
You might like
php实现文件下载更能介绍
2012/11/23 PHP
php实现的常见排序算法汇总
2014/09/08 PHP
php获取文件类型和文件信息的方法
2015/07/10 PHP
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
2015/04/06 Javascript
纯javascript实现自动发送邮件
2015/10/21 Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
2015/11/13 Javascript
JavaScript iframe数据共享接口实现方法
2016/01/06 Javascript
微信小程序 教程之数据绑定
2016/10/18 Javascript
vue+elementUI 复杂表单的验证、数据提交方案问题
2019/06/24 Javascript
node-red File读取好保存实例讲解
2019/09/11 Javascript
[01:01:13]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第三场
2018/04/06 DOTA
Python的Flask框架中实现简单的登录功能的教程
2015/04/20 Python
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
2017/07/12 Python
cmd运行python文件时对结果进行保存的方法
2018/05/16 Python
Python读取mat文件,并转为csv文件的实例
2018/07/04 Python
Pandas之Dropna滤除缺失数据的实现方法
2019/06/25 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
django的auth认证,authenticate和装饰器功能详解
2019/07/25 Python
Python-接口开发入门解析
2019/08/01 Python
Python使用扩展库pywin32实现批量文档打印实例
2020/04/09 Python
django template实现定义临时变量,自定义赋值、自增实例
2020/07/12 Python
flask开启多线程的具体方法
2020/08/02 Python
thinkphp5 路由分发原理
2021/03/18 PHP
10个最常见的HTML5面试题 附答案
2016/06/06 HTML / CSS
美国一家全面的在线零售鞋类公司:SHOEBACCA
2017/01/06 全球购物
描述RIP和OSPF区别以及特点
2015/01/17 面试题
外贸学院会计专业应届生求职信
2013/11/14 职场文书
网络技术专业求职信
2014/02/18 职场文书
环境工程专业自荐信范文
2014/03/18 职场文书
社区党建工作汇报材料
2014/08/14 职场文书
工会趣味活动方案
2014/08/18 职场文书
党支部创先争优活动总结
2014/08/28 职场文书
2014年小学教师工作总结
2014/11/10 职场文书
人事任命通知书
2015/04/21 职场文书
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技