php取model,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中设置:

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:

namespace app\index\model;

use think\Model;

use traits\model\SoftDelete;//引入软删除的类

class User extends Model{

//使用软删除

//删除时,默认更新的字段是delete_time

use SoftDelete;

//如果修改修改默认的字段名字

protected $deleteTime = 'deltime';

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值