thinkphp5第31课:数据自动完成

数据自动完成

数据自动完成指在不需要手动赋值的情况下对字段的值进行处理后写入数据库。
系统支持 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();
        }
    }

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

李 书 明

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

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

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

打赏作者

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

抵扣说明:

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

余额充值