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 相关文章推荐
PHP5.0正式发布 不完全兼容PHP4 新增多项功能
Oct 09 PHP
ip签名探针
Oct 09 PHP
比较strtr, str_replace和preg_replace三个函数的效率
Jun 26 PHP
php判断是否为json格式的方法
Mar 04 PHP
Yii使用find findAll查找出指定字段的实现方法
Sep 05 PHP
PHP生成plist数据的方法
Jun 16 PHP
PHP合并discuz用户脚本的方法
Aug 04 PHP
PHP 7的一些引人注目的新特性简单介绍
Nov 08 PHP
在php7中MongoDB实现模糊查询的方法详解
May 03 PHP
解决laravel资源加载路径设置的问题
Oct 14 PHP
PHP实现一个按钮点击上传多个图片操作示例
Jan 23 PHP
php array_map()函数实例用法
Mar 03 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 CLI实现简单的数据库实时监控调度
2009/07/01 PHP
PHP实现简单汉字验证码
2015/07/28 PHP
php实现基于openssl的加密解密方法
2016/09/30 PHP
利用php-cli和任务计划实现刷新token功能的方法
2017/05/03 PHP
利用PHP判断是否是连乘数字串的方法示例
2017/07/03 PHP
解决Laravel5.2 Auth认证退出失效的问题
2019/10/14 PHP
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
微信小程序 页面滑动事件的实例详解
2017/10/12 Javascript
微信小程序实现tab切换效果
2017/11/21 Javascript
node.js部署之启动后台运行forever的方法
2018/05/23 Javascript
angularjs1.5 组件内用函数向外传值的实例
2018/09/30 Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
2019/09/24 Javascript
深入学习Vue nextTick的用法及原理
2019/10/08 Javascript
vue elementUI 表单校验的实现代码(多层嵌套)
2019/11/06 Javascript
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
学习 Vue.js 遇到的那些坑
2021/02/02 Vue.js
Python入门篇之列表和元组
2014/10/17 Python
python字典值排序并取出前n个key值的方法
2018/10/17 Python
OpenCV-Python 摄像头实时检测人脸代码实例
2019/04/30 Python
浅析python,PyCharm,Anaconda三者之间的关系
2019/11/27 Python
Python代码块及缓存机制原理详解
2019/12/13 Python
Python验证码截取识别代码实例
2020/05/16 Python
CSS3支持IE6, 7, and 8的边框border属性
2012/12/28 HTML / CSS
canvas线条的属性详解
2018/03/27 HTML / CSS
莫斯科购买书籍网站:Book24
2020/01/12 全球购物
贝佳斯官方网站:Borghese
2020/05/08 全球购物
小学生开学感言
2014/02/28 职场文书
物流管理专业毕业生求职信
2014/03/23 职场文书
教师党的群众路线对照检查材料
2014/09/24 职场文书
2015年党员自评材料
2014/12/17 职场文书
人口与计划生育责任书
2015/05/09 职场文书
新娘婚礼致辞
2015/07/27 职场文书
2016年清明节寄语
2015/12/04 职场文书
如何写好活动总结
2019/06/21 职场文书
关于办理居住证的介绍信模板
2019/11/27 职场文书
Python进程池与进程锁之语法学习
2022/04/11 Python