thinkphp5第31课:数据自动完成

本文介绍了一种数据自动完成机制,该机制能在写入、新增和更新数据时自动处理字段值,如自动设置状态、时间和密码字段,通过MD5加密密码并自动设置创建时间和状态。
部署运行你感兴趣的模型镜像

数据自动完成

数据自动完成指在不需要手动赋值的情况下对字段的值进行处理后写入数据库。
系统支持 auto 、 insert 和 update 三个属性,可以分别在写入、新增和更新的时候进行字段的自动完
成机制,auto属性自动完成包含新增和更新操作

我们定义学生模型如下:

<?php
namespace app\index\model;
use think\Model;

class Student extends Model
{
    // 设置当前模型对应的完整数据表名称, 必须是 $table ,不能是其它名字
    protected $table = 'student';

    //添加记录时,自动将字段status置为1(正常)
    //对createtime也要处理,见setCreatetimeAtrr
    protected $insert = [
        'status' => 1,
        'createtime'
    ];

    //添加或修改数据时,自动处理password字段
    protected $auto = ['password'];

    //状态的读取器
    public function getStatusAttr($value)
    {
        $status = [0=>'冻结',1=>'正常'];
        return $status[$value];
    }

    //创建时间的读取器
    public function getCreatetimeAttr($value)
    {
        return date('Y-m-d',$value);

    }
    //时间字段的修改器
    public function setCreatetimeAttr()
    {
        return time();
    }

    //修改器,对密码进行md5加密
    public function setPasswordAttr($value)
    {
        return md5($value);
    }

}

使用自动完成

public function add()
    {
        //将要添加的数据
        //必填字段:status和createtime并没有赋值,它们可以在模型中自动完成
        $data = [
            'no' => '1835050006',
            'name' => '孙七',
            'sex' => '男',
            'age' => 20,
            'password'=>'123456',  //原始数据采用明文
          ];

        //实例化模型对象
        $stu = new Student();
        try {
            $count = $stu->save($data); //返回影响的行数
            return $count;
        } catch (Exception $ex) {
            return '添加错误,' . $ex->getMessage();
        }

    }

使用修改数据

public function update()
    {
        $no = '1835050001';
        $data = ['password'=>'666666']; //采用明文,保存到数据库中是md5加密过的
        $stu = new Student();
        try{
            $count = $stu->save($data,['no'=>$no]);
            return $count;
        }catch (Exception $ex){
            return '更新失败,' . $ex->getMessage();
        }
    }

执行完成以上操作时,一定要查看数据库,数据是否正如自己预期的那样

 

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李 书 明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值