Thinkphp5.0 的使用模型Model的获取器与修改器
Thinkphp5.0 的使用模型Model的获取器、修改器、软删除
一、获取器
在model中使用 get+字段名+Attr,可以修改字段的返回值。
数据库中性别保存为,0未知、1男、2女,查询时返回汉字:
model:
//将性别的012修改为未知、男。女返回
public function getSexAttr($val){
switch($val){
case '1' :
return '男';
case '2':
return '女';
default:
return '未知';
}
} //格式化时间戳后返回
public function getAddtimeAttr($val){
if($val){
return date('Y-m-d H:i:s',$val);
}else{
return $val;
}
}
controller:
$res = TestUser::get(2);
dump($res->toArray());//性别会被model转化
dump($res->getData());//返回原始数据
二、模型修改器:
在model中使用 set+字段名+Attr,可以修改字段值,方便添加数据时使用。
示例,比如密码需要MD5加密:
model:
//对密码字段加密之后存储
//第一个参数是密码
//第二个参数是添加的数据,可选
public function setPasswordAttr($val,$data){
if($val === '') {
return $val;
}else{
return md5($val.$data['email']);
}
}
三、自动完成:
model:
//添加和修改时,都会自动完成的字段
protected $auto = ['addtime']; public function setAddtimeAttr(){
return time();
}
三、添加数据时,自动完成:
model:
protected $insert = ['addtime'];
public function setAddtimeAttr(){
return time();
}
四、修改数据时,自动完成:
model:
protected $update = ['addtime'];
public function setAddtimeAttr(){
return time();
}
五、自动完成时间戳
在数据库配置文件database.php中,有一项:
// 自动写入时间戳字段
'auto_timestamp' => false,
如果开启,则会自动完成所有表的时间戳,但是不建议这样,只在需要的地方设置更安全。
例如对用户表的时间戳自动完成,就在User的model中设置:
<?php
namespace app\index\model;
use think\Model; class User extends Model{ //开启自动完成时间戳功能
protected $autoWriteTimestamp = true;
//开启后,
//添加数据时,默认自动完成的字段是:create_time和update_time。
//修改数据时,默认自动完成的字段是:update_time。
//如果数据库不是这两个字段,则会报错
//如果不想用这两个字段,可以进行如下修改
protected $createTime = 'addtime';//修改默认的添加时间字段
protected $updateTime = 'updtime';//修改默认的修改时间字段
protected $updateTime = false;//当不需要这个字段时设置为false
}
六、软删除
软删除:当删除条记录时,有时我们需要假删除,只通过修改某个字段状态来标记记录已删除。
model:
<?php
namespace app\index\model;
use think\Model;
use traits\model\SoftDelete;//引入软删除的类 class User extends Model{ //使用软删除
//删除时,默认更新的字段是delete_time
use SoftDelete;
//如果修改修改默认的字段名字
protected $deleteTime = 'deltime';
}
控制器:
$res = User::destroy(1);//软删除
//返回影响的行数
dump($res);
执行删除后,就会更新delete_time字段,如果update_time字段也开启了自动完成,也会更新update_time字段。
//获取所有数据,会过滤掉delete_time不为null的记录(即软删除的记录不会显示)
//注意,delete_time字段默认值要设置为null,不能设置为0,否则0页会被视为软删除过的数据
$res = $model->select(); //如果需要获取包含软删除的数据,使用withTrashed(true)。
$res = User::withTrashed(true)->select(); //如果需要获取软删除过的数据
$res = User::onlyTrashed()->select(); //删除id是15的记录,如果开启软删除,会进行假删除
$res = User::destroy(15); //如果开启了软删除,需要真正地删除数据,不做软删除
//destory()第二个参数传递true
$res = User::destroy(15,true);
//delete()参数传递true
$userData = User::get(15);
$userData->delete(true);
Thinkphp5.0 的使用模型Model的获取器与修改器的更多相关文章
- Thinkphp5.0 的使用模型Model查询
Thinkphp5.0 的使用模型Model查询 一.查询多条记录 获取多个数据可以使用:select()方法和all()方法. 示例一:使用all()方法. //(1)筛选条件使用闭包函数 $res ...
- Thinkphp5.0 的使用模型Model删除数据
Thinkphp5.0 的使用模型Model删除数据 一.使用destory()删除数据 //删除id为3的记录 $res = User::destroy(3); //返回影响的行数 dump($re ...
- Thinkphp5.0 的使用模型Model更新数据
Thinkphp5.0 的使用模型Model更新数据 (1)使用update()方法进行更新数据 一.where条件写在更新数据中 (这种情况更新的数据,必须含主键) $res = User::upd ...
- Thinkphp5.0 的使用模型Model添加数据
Thinkphp5.0 的使用模型Model添加数据 使用create()方法添加数据 $res = TestUser::create([ 'name' => 'zhao liu', 'pass ...
- thinkphp模型中的获取器和修改器(根据字段名自动调用模型中的方法)
thinkphp模型中的获取器和修改器(根据字段名自动调用模型中的方法) 一.总结 记得看下面 1.获取器的作用是在获取数据的字段值后自动进行处理 2.修改器的作用是可以在数据赋值的时候自动进行转换处 ...
- thinkphp5.0学习笔记(三)获取信息,变量,绑定参数
1.构造函数: 控制器类必须继承了\think\Controller类,才能使用: 方法_initialize 代码: <?php namespace app\lian\controller; ...
- php手记之05-tp5获取器与修改器
获取器 命名规范为: getFieldNameAttr 例如,我们需要对状态值进行转换,可以使用: <?php class User extends Model { public functio ...
- ThinkPHP5——模型(model)的使用
在使用ThinkPHP5的过程中,我经常使用db进行数据库操作的,后来接触到了模型(model),刚使用时感觉跟db没啥区别,后来查官网知道模型基类中还提供了较多的其他的方法可以方便使用例如获取器.修 ...
- thinkphp5.0和thinkphp3.2的区别不同之处
先看目录结构: thinkphp 5.0的目录结构, 文档:https://www.kancloud.cn/manual/thinkphp5/118008 project 应用部署目录 ├─appli ...
随机推荐
- 2017广东工业大学程序设计竞赛决赛 G 等凹数字
题意: Description 定义一种数字称为等凹数字,即从高位到地位,每一位的数字先非递增再非递减,不能全部数字一样,且该数是一个回文数,即从左读到右与从右读到左是一样的,仅形成一个等凹峰,如54 ...
- mongodb用户权限管理(二)
数据库 分配用户权限 有了创建语法,和参数说明,接下来开始实践. 注意,还有一点,账号是跟着数据库绑定的,在那个库里授权,就在那个库里验证(auth) 否则会失败 创建 账号管理授权权限 的账号 &g ...
- CentOS 7 配置本地yum 源
1. 加载 CentOS的ISO镜像并挂载: [root@localhost files]# mount /media/files/CentOS-7-x86_64-DVD-1611.iso /mnt/ ...
- CREATE RULE - 定义一个新的重写规则
SYNOPSIS CREATE [ OR REPLACE ] RULE name AS ON event TO table [ WHERE condition ] DO [ INSTEAD ] { N ...
- arch - 显示机器的体系结构
总览 (SYNOPSIS) arch 描述 (DESCRIPTION) arch 等同于 uname -m. 目前的 Linux 系统上, arch 显示 的 数据 有 "i386" ...
- JFinal项目eclipse出现the table mapping of model: com.gexin.model.scenic.Scenic not exists or the ActiveRecordPlugin not start.
JFinal项目eclipse出现the table mapping of model: com.gexin.model.scenic.Scenic not exists or the ActiveR ...
- Xcode5真机调试
http://blog.csdn.net/u011332675/article/details/17397849 (真机调试详解) http://blog.sina.com.cn/s/blog_ ...
- 笔试算法题(06):最大连续子数组和 & 二叉树路径和值
出题:预先输入一个整型数组,数组中有正数也有负数:数组中连续一个或者多个整数组成一个子数组,每个子数组有一个和:求所有子数组中和的最大值,要求时间复杂度O(n): 分析: 时间复杂度为线性表明只允许一 ...
- Java中Date类型的工具类
package com.mytripod.util; import java.text.DateFormat; import java.text.SimpleDateFormat; import ja ...
- linux如何正确设置静态ip
如果是新安装的CentOS7的用户,刚开始应该是没网的,ifconfig命令在CentOS7已经被淘汰了. 1.使用ip addr 即查看分配网卡情况. 2.激活网卡 [root@localhost ...