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 相关文章推荐
多文件上传的例子
Oct 09 PHP
php在window iis的莫名问题的测试方法
May 14 PHP
计算php页面运行时间的函数介绍
Jul 01 PHP
PHP 文件编程综合案例-文件上传的实现
Jul 03 PHP
php+mysqli使用面向对象方式查询数据库实例
Jan 29 PHP
实现PHP+Mysql无限分类的方法汇总
Mar 02 PHP
十个PHP高级应用技巧果断收藏
Sep 25 PHP
微信利用PHP创建自定义菜单的方法
Aug 01 PHP
详解php中空字符串和0之间的关系
Oct 23 PHP
通过修改Laravel Auth使用salt和password进行认证用户详解
Aug 17 PHP
PHP实现简单的模板引擎功能示例
Sep 02 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
Apr 20 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动态变静态原理
2006/11/25 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
2014/12/25 PHP
Jquery+JSon 无刷新分页实现代码
2010/04/01 Javascript
Js注册协议倒计时的小例子
2013/06/24 Javascript
js 图片随机不定向浮动的实现代码
2013/07/02 Javascript
触屏中的JavaScript事件分析
2015/02/06 Javascript
jQuery实现html表格动态添加新行的方法
2015/05/28 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
纯javascript模仿微信打飞机小游戏
2015/08/20 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
从0开始学Vue
2016/10/27 Javascript
jQuery File Upload文件上传插件使用详解
2016/12/06 Javascript
JavaScript初学者必看“new”
2017/06/12 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
2017/07/02 Javascript
nodejs基于WS模块实现WebSocket聊天功能的方法
2018/01/12 NodeJs
vue 动态修改a标签的样式的方法
2018/01/18 Javascript
把vue-router和express项目部署到服务器的方法
2018/02/21 Javascript
vue 解决computed修改data数据的问题
2019/11/06 Javascript
[16:56]heroes英雄教学 司夜刺客
2014/09/18 DOTA
[02:34]DOTA2亚洲邀请赛 BG战队出场宣传片
2015/03/09 DOTA
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
简单介绍使用Python解析并修改XML文档的方法
2015/10/15 Python
python实现扫描局域网指定网段ip的方法
2019/04/16 Python
Python完成毫秒级抢淘宝大单功能
2019/06/06 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
2020/02/15 Python
Python中的面向接口编程示例详解
2021/01/17 Python
万得城电器土耳其网站:欧洲第一大电子产品零售商
2016/10/07 全球购物
大学生家政服务项目创业计划书
2014/01/30 职场文书
高三自我评价
2014/02/01 职场文书
党员实事承诺书
2014/03/26 职场文书
有关环保的标语
2014/06/13 职场文书
幼儿园感谢信
2015/01/21 职场文书
个人更名证明
2015/06/23 职场文书
python自然语言处理之字典树知识总结
2021/04/25 Python
德劲DE1107指针试高灵敏度全波段收音机机评
2022/04/05 无线电
Python日志模块logging用法
2022/06/05 Python