前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Thinkphp6(7)模型学习与知识总结(三)

Thinkphp6(7)模型学习与知识总结(三)

作者头像
哆哆Excel
发布2022-10-25 15:17:13
7440
发布2022-10-25 15:17:13
举报
文章被收录于专栏:哆哆Excel哆哆Excel

Thinkphp6(7)模型学习与知识总结(三)

继续学习模型的知识,上节课已学习到的知识有查询、软删除、自动时间戳。

今天来学习:

1.数据更新,

2. 获取器

3.修改器

◆数据更新

1.使用find()方法获取数据,然后通过save()方法保存修改,返回布尔值

2.通过 where()方法结合find()方法的查询条件获取的数据,进行修改

3.save()方法只会更新变化的数据,如果提交的修改数据没有变化,则不更新

更新时:如果要执行SQL函数更新,可以使用下面的方法

图片
图片

4.但如果你想强制更新数据,即使数据一样,那么可以使用 force()方法Suser->force()->save()

5. 字段过滤

默认情况下会过滤非数据表字段的数据,如果你通过外部提交赋值给模型,并且希望指定某些字段写入,可以使用:

$user = User::find(1);

// post数组中只有name和email字段会写入

$user->allowField(['name', 'email'])->save($_POST);

最佳用法是在传入模型数据之前就进行过滤,例如:

$user = User::find(1);

// post数组中只有name和email字段会写入

$data = Request::only(['name','email']);

$user->save($data);

6. 批量更新数据

可以使用saveAll方法批量更新数据,只需要在批量更新的数据中包含主键即可,

图片
图片

7. 直接更新(静态方法)

使用模型的静态update方法更新:

User::update(['name' => 'thinkphp'], ['id' => 1]);

模型的update方法返回模型的对象实例

如果你的第一个参数中包含主键数据,可以无需传入第二个参数(更新条件)

User::update(['name' => 'thinkphp', 'id' => 1]);

如果你需要只允许更新指定字段,可以使用

User::update(['name' => 'thinkphp', 'email' => 'thinkphp@qq.com'], ['id' => 1], ['name']);

上面的代码只会更新name字段的数据。

====学习测试====

★测试1  

//学习数据更新方法

     public function update()

     {

     //先查询到第17条记录,再把其中的user_status更新为2

     $data=Users::find(17);

     $data->user_status=2;

     $res=$data->save();

     print_r($res);

     }

图片
图片

★测试2.成功把user_status自增加1

图片
图片

★测试3 静态方法update方法有三个参数

update([修改的数据可以是数组],【指定id】【指定可修改的字段】)

$res=$users=Users::update([

     'id'=> 15,

     'user_mobile'=> '13900000001'

     ]);

      print_r($res);

它返回是一个对象

◆模型的获取器

1.获取器的作用是对模型实例的数据做出自动处理:

2.一个获取器对应模型的一个特殊方法,该方法为 public;

3.方法名的命名規范为: get字段Attr():

4.举个例子,数据库表示状态 status字段采用的是数值.而页面上,我们需要输出 status字段希望是中文,就可以使用获取器:

图片
图片

====学习测试====

★测试:首先建立一个获取器代码

public function getStatusAttr($value)

    {

    $status=[0=>'管理员',1=>'在编',2=>'镇聘',3=>'学校管理员'];

    return $status[$value];

}

再查询出数据来

图片
图片

如果字段名是有下划线的FieldName要用驼峰转换

图片
图片

如模型中有了修改器,打印输出的是修改后的数据了,那我想输出原来的数据,怎么办呢:用getData方法

图片
图片

◆模型的修改器

模型修改器的作用,就是对模型设置对象的值进行处理比如,我们要新増数据的时候,对数据就行格式化、过滤、转换等处理模型

修改器的命名规则为: setFieldAttr,

我们要设置一个新増,规定邮箱的英文都必须大写,修改器如下

public function setEmallAttr(svalue){

return strtoupper(Svalue)}

.除了新增,会调用修改器,修改更新也会触发修改器

.模型修改器只对模型方法有效,调用数据库的方法是无效的,

比如-> insert();

===学习测试===

图片
图片
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 哆哆Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档