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 相关文章推荐
apache rewrite_module模块使用教程
Jan 10 PHP
php下批量挂马和批量清马代码
Feb 27 PHP
php使用qr生成二维码的示例分享
Jan 20 PHP
PHP.ini安全配置检测工具pcc简单介绍
Jul 02 PHP
使用JavaScript创建新样式表和新样式规则
Jun 14 PHP
PHP使用FFmpeg获取视频播放总时长与码率等信息
Sep 13 PHP
ajax+php实现无刷新验证手机号的实例
Dec 22 PHP
实例介绍PHP删除数组中的重复元素
Mar 03 PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
Aug 02 PHP
Laravel框架实现的上传图片到七牛功能详解
Sep 06 PHP
php判断数组是否为空的实例方法
May 10 PHP
ThinkPHP5框架中使用JWT的方法示例
Jun 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 SPL标准库的用法(遍历目录,查找固定条件的文件)
2013/06/18 PHP
javascript delete 使用示例代码
2010/03/29 Javascript
鼠标拖动实现DIV排序示例代码
2013/10/14 Javascript
js获取上传文件大小示例代码
2014/04/10 Javascript
jquery实现表单输入时提示文字滑动向上效果
2015/08/10 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
2016/05/17 Javascript
浅谈js中字符和数组一些基本算法题
2016/08/15 Javascript
javascript设计模式之module(模块)模式
2016/08/19 Javascript
Vue.js使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用
2017/05/10 Javascript
浅谈 Vue 项目优化的方法
2017/12/16 Javascript
webpack@v4升级踩坑(小结)
2018/10/08 Javascript
Vuejs通过拖动改变元素宽度实现自适应
2020/09/02 Javascript
vue.js实现点击图标放大离开时缩小的代码
2021/01/27 Vue.js
Python Queue模块详解
2014/11/30 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
2018/01/02 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
使用python画个小猪佩奇的示例代码
2018/06/06 Python
python从子线程中获得返回值的方法
2019/01/30 Python
pyinstaller打包单个exe后无法执行错误的解决方法
2019/06/21 Python
python中selenium操作下拉滚动条的几种方法汇总
2019/07/14 Python
numpy中三维数组中加入元素后的位置详解
2019/11/28 Python
Python 脚本的三种执行方式小结
2019/12/21 Python
使用Python 自动生成 Word 文档的教程
2020/02/13 Python
HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
2013/01/30 HTML / CSS
推荐WEB开发者最佳HTML5和CSS3代码生成器
2015/11/24 HTML / CSS
微软中国官方商城:Microsoft Store中国
2018/10/12 全球购物
HolidayLettings英国:预订最好的度假公寓、别墅和自助式住宿
2019/08/27 全球购物
什么是组件架构
2016/05/15 面试题
生物制药专业求职信
2014/03/11 职场文书
大学新学期计划书
2014/04/28 职场文书
放飞梦想演讲稿200字
2014/08/26 职场文书
中职毕业生自我鉴定
2014/09/13 职场文书
2016幼儿教师自荐信范文
2016/01/28 职场文书
Golang二维数组的使用方式
2021/05/28 Golang
Javascript设计模式之原型模式详细
2021/10/05 Javascript