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实现定时生成HTML网站首页实例代码
Nov 20 PHP
PHP操作mysql函数详解,mysql和php交互函数
May 19 PHP
php数组函数序列之array_pop() - 删除数组中的最后一个元素
Nov 07 PHP
ThinkPHP3.1查询语言详解
Jun 19 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
Jul 04 PHP
PHP中调用C/C++制作的动态链接库的教程
Mar 10 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
Jul 14 PHP
php求今天、昨天、明天时间戳的简单实现方法
Jul 28 PHP
php事务回滚简单实现方法示例
Mar 28 PHP
php获取文章内容第一张图片的方法示例
Jul 03 PHP
thinkPHP5框架实现基于ajax的分页功能示例
Jun 12 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
Oct 22 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数据缓存技术
2007/02/14 PHP
使用PHP遍历文件夹与子目录的函数代码
2011/09/26 PHP
PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
2011/12/28 PHP
深入php var_dump()函数的详解
2013/06/05 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
php+iframe 实现上传文件功能示例
2020/03/04 PHP
jquery 读取页面load get post ajax 四种方式代码写法
2011/04/02 Javascript
js charAt的使用示例
2014/02/18 Javascript
js Object2String方便查看js对象内容
2014/11/24 Javascript
js实现顶部可折叠的菜单工具栏效果实例
2015/05/09 Javascript
javascript删除元素节点removeChild()用法实例
2015/05/26 Javascript
DeviceOne 让你一见钟情的App快速开发平台
2016/02/17 Javascript
js实现的页面加载完毕之前loading提示效果完整示例【附demo源码下载】
2016/08/02 Javascript
vue-resource 拦截器(interceptor)的使用详解
2017/07/04 Javascript
快速将Vue项目升级到webpack3的方法步骤
2017/09/14 Javascript
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
cropper js基于vue的图片裁剪上传功能的实现代码
2018/03/01 Javascript
vue实现动态添加数据滚动条自动滚动到底部的示例代码
2018/07/06 Javascript
Vue.js路由实现选项卡简单实例
2019/07/24 Javascript
Python实现的数据结构与算法之快速排序详解
2015/04/22 Python
给Python入门者的一些编程建议
2015/06/15 Python
解决uWSGI的编码问题详解
2017/03/24 Python
详解 Python中LEGB和闭包及装饰器
2017/08/03 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
2018/01/23 Python
Python给图像添加噪声具体操作
2019/03/03 Python
什么是三层交换,说说和路由的区别在那里
2014/09/01 面试题
学生个人求职自荐信格式
2013/09/23 职场文书
yy生日主持词
2014/03/20 职场文书
小学感恩教育活动总结
2014/07/07 职场文书
暑期社会实践个人总结
2015/03/06 职场文书
全国助残日活动总结
2015/05/11 职场文书
学生会干部任命书
2015/09/21 职场文书
2015年度工程师评职称工作总结
2015/10/14 职场文书
2016年6月份红领巾广播稿
2015/12/21 职场文书
毕业生求职自荐信(2016最新版)
2016/01/28 职场文书
2016应届毕业生自荐信范文
2016/01/28 职场文书