ThinkPHP CURD方法之data方法详解

 更新时间:2014年06月18日 17:12:52   投稿:shichen2014  
ThinkPHP CURD方法的data方法用于设置当前要操作的数据对象的值这篇文章主要介绍了data方法的应用,需要的朋友可以参考下

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实现单例模式最安全的做法

    这篇文章主要介绍了PHP实现单例模式最安全的做法,适用PHP5.3以上版本,采用了最好的做法,需要的朋友可以参考下
    2014-06-06
  • Yii隐藏URL中index.php的方法

    Yii隐藏URL中index.php的方法

    这篇文章主要介绍了Yii隐藏URL中index.php的方法,涉及Yii配置文件的设置与伪静态的配置技巧,需要的朋友可以参考下
    2016-07-07
  • 详解Yii2.0 rules验证规则集合

    详解Yii2.0 rules验证规则集合

    本篇文章主要介绍了详解Yii2.0 rules验证规则集合 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03
  • 帝国CMS留言板回复后发送EMAIL通知客户

    帝国CMS留言板回复后发送EMAIL通知客户

    这篇文章主要介绍了帝国CMS留言板回复后发送EMAIL通知客户的方法和具体修改示例,有需要的小伙伴可以参考下。
    2015-07-07
  • Symfony2实现在doctrine中内置数据的方法

    Symfony2实现在doctrine中内置数据的方法

    这篇文章主要介绍了Symfony2实现在doctrine中内置数据的方法,结合实例形式分析了在doctrine中内置数据的具体步骤与相关技巧,需要的朋友可以参考下
    2016-02-02
  • 详解no input file specified 三种解决方法

    详解no input file specified 三种解决方法

    这篇文章主要介绍了详解no input file specified 三种解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • WordPress中的shortcode短代码功能使用详解

    WordPress中的shortcode短代码功能使用详解

    WordPress中的短代码能通过简单的函数集合创建宏代码来生成内容,方便函数调用,下面就让我们一起来看一下WordPress中的shortcode短代码功能使用详解.
    2016-05-05
  • 关于laravel5.5的定时任务详解(demo)

    关于laravel5.5的定时任务详解(demo)

    今天小编就为大家分享一篇关于laravel5.5的定时任务详解(demo),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • thinkphp项目如何自定义微信分享描述内容

    thinkphp项目如何自定义微信分享描述内容

    本文主要讲述:在thinkphp框架中,如何获取微信分享接口权限、如何设置安全域名、如何修改微信分享标题、修改微信分享描述、修改微信分享图片、如何定制微信分享内容
    2017-02-02
  • Yii框架结合sphinx,Ajax实现搜索分页功能示例

    Yii框架结合sphinx,Ajax实现搜索分页功能示例

    这篇文章主要介绍了Yii框架结合sphinx,Ajax实现搜索分页功能,结合实例形式分析了Yii框架中使用sphinx与Ajax实现搜索结果的分页展示效果,需要的朋友可以参考下
    2016-10-10

最新评论