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 microtime获取浮点的时间戳
Feb 21 PHP
php set_time_limit(0) 设置程序执行时间的函数
May 26 PHP
PHP学习之数组值的操作
Apr 17 PHP
PHP中实现crontab代码分享
Mar 26 PHP
php获取Google机器人访问足迹的方法
Apr 15 PHP
Yii数据库缓存实例分析
Mar 29 PHP
PHP中的多种加密技术及代码示例解析
Oct 20 PHP
php注册和登录界面的实现案例(推荐)
Oct 24 PHP
Yii2实现log输出到file及database的方法
Nov 12 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
Feb 04 PHP
Yii2框架实现数据库常用操作总结
Feb 08 PHP
什么是PHP文件?如何打开PHP文件?
Jun 27 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
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
linux iconv方法的使用
2011/10/01 PHP
PHP中常用的转义函数
2014/02/28 PHP
PHP常用的缓存技术汇总
2014/05/05 PHP
php显示指定目录下子目录的方法
2015/03/20 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
jQuery函数的等价原生函数代码示例
2013/05/27 Javascript
js操作checkbox遇到的问题解决
2013/06/29 Javascript
关于jQuery中.attr()和.prop()的问题探讨
2013/09/06 Javascript
Jquery实现纵向横向菜单
2016/01/24 Javascript
详解AngularJS 模态对话框
2016/04/07 Javascript
设置jQueryUI DatePicker默认语言为中文
2016/06/04 Javascript
Javascript类型系统之String字符串类型详解
2016/06/21 Javascript
JavaScript中利用for循环遍历数组
2017/01/15 Javascript
javascript+css3开发打气球小游戏完整代码
2017/11/28 Javascript
Vue组件化开发思考
2018/02/02 Javascript
ES6 更易于继承的类语法的使用
2019/02/11 Javascript
Vue+element 解决浏览器自动填充记住的账号密码问题
2019/06/11 Javascript
详解vue页面首次加载缓慢原因及解决方案
2019/11/06 Javascript
[49:18]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 OG vs TNC
2018/04/01 DOTA
[01:18:21]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
老生常谈Python序列化和反序列化
2017/06/28 Python
用Python读取几十万行文本数据
2018/12/24 Python
python scrapy爬虫代码及填坑
2019/08/12 Python
如何为Python终端提供持久性历史记录
2019/09/03 Python
Python Handler处理器和自定义Opener原理详解
2020/03/05 Python
Python 执行矩阵与线性代数运算
2020/08/01 Python
施华洛世奇西班牙官网:SWAROVSKI西班牙
2019/06/06 全球购物
超市总经理岗位职责
2014/02/02 职场文书
乡镇干部先进事迹材料
2014/02/03 职场文书
2014基层党员干部学习全国两会心得体会
2014/03/17 职场文书
教师批评与自我批评发言稿
2014/10/15 职场文书
县委党的群众路线教育实践活动工作情况报告
2014/10/25 职场文书
干部作风建设工作总结
2014/10/29 职场文书
2014党的群众路线教育实践活动总结报告
2014/10/31 职场文书
Vue通过懒加载提升页面响应速度
2021/05/10 Vue.js