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初学者头疼问题总结
Oct 09 PHP
php empty函数判断mysql表单是否为空
Apr 12 PHP
php入门学习知识点二 PHP简单的分页过程与原理
Jul 14 PHP
php并发对MYSQL造成压力的解决方法
Feb 21 PHP
php使用百度翻译api示例分享
Jan 31 PHP
PHP实现ftp上传文件示例
Aug 21 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
Sep 06 PHP
PHP使用正则表达式获取微博中的话题和对象名
Jul 18 PHP
Yii实现的多级联动下拉菜单
Jul 13 PHP
php连接微软MSSQL(sql server)完全攻略
Nov 27 PHP
Laravel实现autoload方法详解
May 07 PHP
laravel框架实现敏感词汇过滤功能示例
Feb 15 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 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
基于PHP5魔术常量与魔术方法的详解
2013/06/13 PHP
Thinkphp调用Image类生成缩略图的方法
2015/03/07 PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
2020/04/22 PHP
js动态为代码着色显示行号
2013/05/29 Javascript
Angularjs基础知识及示例汇总
2015/01/22 Javascript
用svg制作富有动态的tooltip
2015/07/17 Javascript
基于JQuery实现分隔条的功能
2016/06/17 Javascript
让html元素随浏览器的大小自适应垂直居中的实现方法
2016/10/12 Javascript
简单模拟node.js中require的加载机制
2016/10/27 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全(推荐)
2016/12/20 Javascript
jQuery插件jsonview展示json数据
2018/05/26 jQuery
详解Vue.js v-for不支持IE9的解决方法
2018/12/29 Javascript
初学node.js中实现删除用户路由
2019/05/27 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
2019/11/01 Javascript
[01:43]深扒TI7聊天轮盘语音出处4
2017/05/11 DOTA
Python遍历文件夹和读写文件的实现代码
2016/08/28 Python
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
python多进程使用及线程池的使用方法代码详解
2018/10/24 Python
使用Python自动生成HTML的方法示例
2019/08/06 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
2020/06/27 Python
Python中random模块常用方法的使用教程
2020/10/04 Python
世界上最大的罕见唱片、CD和音乐纪念品网上商店:991.com
2018/05/03 全球购物
巴西最好的男鞋:Rafarillo
2018/05/25 全球购物
Java平台和其他软件平台有什么不同
2015/06/05 面试题
北京SQL新华信咨询
2016/09/30 面试题
2014年小学教学工作总结
2014/11/13 职场文书
班主任寄语2015
2015/02/26 职场文书
房地产公司财务总监岗位职责
2015/04/03 职场文书
健康教育主题班会
2015/08/14 职场文书
2016银行求职自荐信
2016/01/28 职场文书
工伤调解协议书
2016/03/21 职场文书
中学生打架检讨书之500字
2019/08/06 职场文书
浅谈python中的多态
2021/06/15 Python
SpringBoot系列之MongoDB Aggregations用法详解
2022/02/12 MongoDB