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静态类
Nov 25 PHP
php中截取字符串支持utf-8
Jan 18 PHP
PHP 采集程序原理分析篇
Mar 05 PHP
用php或asp创建网页桌面快捷方式的代码
Mar 23 PHP
php 生成自动创建文件夹并上传文件的示例代码
Mar 07 PHP
PHP获取youku视频真实flv文件地址的方法
Dec 23 PHP
php内嵌函数用法实例
Mar 20 PHP
详解php中空字符串和0之间的关系
Oct 23 PHP
php事件驱动化设计详解
Nov 10 PHP
php微信公众平台开发(三)订阅事件处理
Dec 06 PHP
yii 2.0中表单小部件的使用方法示例
May 23 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
Dec 02 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
修改ThinkPHP缓存为Memcache的方法
2014/06/25 PHP
smarty简单入门实例
2014/11/28 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
2016/08/21 PHP
thinkPHP多表查询及分页功能实现方法示例
2017/07/03 PHP
thinkPHP框架乐观锁和悲观锁实例分析
2019/10/30 PHP
javascript学习网址备忘
2007/05/29 Javascript
javascript 闭包
2011/09/15 Javascript
passwordStrength 基于jquery的密码强度检测代码使用介绍
2011/10/08 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
Javascript中的call()方法介绍
2015/03/15 Javascript
jquery通过closest选择器修改上级元素的方法
2015/03/17 Javascript
javascript适合移动端的日期时间拾取器
2015/11/10 Javascript
两种简单的跨域方法(jsonp、php)
2017/01/02 Javascript
JavaScript实现前端分页控件
2017/04/19 Javascript
微信小程序实现根据字母选择城市功能
2017/08/16 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
Vue2.0基于vue-cli+webpack父子组件通信(实例讲解)
2017/09/14 Javascript
vue 表单之通过v-model绑定单选按钮radio
2019/05/13 Javascript
简单了解vue 插值表达式Mustache
2020/07/22 Javascript
python: line=f.readlines()消除line中\n的方法
2018/03/19 Python
python 实现对文件夹内的文件排序编号
2018/04/12 Python
Face++ API实现手势识别系统设计
2018/11/21 Python
值得收藏,Python 开发中的高级技巧
2018/11/23 Python
基于Python实现天天酷跑功能
2021/01/06 Python
C#如何允许一个类被继承但是避免这个类的方法被重载?
2015/02/24 面试题
幼儿教育感言
2014/02/05 职场文书
公司中秋节活动方案
2014/02/12 职场文书
《孔子游春》教学反思
2014/02/25 职场文书
感恩之星事迹材料
2014/05/03 职场文书
行政执法队伍作风整顿剖析材料
2014/10/11 职场文书
批评与自我批评总结
2014/10/17 职场文书
催款函范本大全
2015/06/24 职场文书
结婚司仪主持词
2015/06/29 职场文书
文书工作总结(范文)
2019/07/11 职场文书
HTML5+CSS+JavaScript实现捉虫小游戏设计和实现
2021/10/16 HTML / CSS
一文搞懂Golang 时间和日期相关函数
2021/12/06 Golang