开启辅助访问
帐号登录 |立即注册

TP5模型的读取器与修改器:getAttr()和setAttr()

 
模型的读取器
1、触发条件:当用模型对象读取表中字段值的时候;
2、应用场景:日期时间字段,集合或枚举数据,数字状态与文本转换,字段拼装;
3、设置位置:在模型中设置,访问属性通常为protected,不允许外部直接访问;
4、方法名称: get属性名称Attr($name, $data=[])
语法:
get FieldName Attr($name, $data=[])
说明:FieldName 对应表中字段
举例:
控制器中读出的字段数据直接用函数修改
<?php
namespace app\ index\controller;
use app\ index \model\Staff;
class Index
{
public function index( )
{
$staff = Staff: :get(1033) ;
return $staff->name. '的入职时间是: ‘.date( 'Y-m-d' , $staff->hiredate) ;
}
}
如要修改的数据很多,则要在数据库模板文件中设置修改器,方法如下:
修改对应的数据库表模板文件Staff.php
<?php
namespace app\ index\model;
use think\Model;
class Staff extends Mode 1
{
protected function getHireDateAttr($hiredate)
{
return date( 'Y-m-d' ,$hiredate) ;
}
}
回到index.php控制器文件中,修改
return $staff->name. '的入职时间是:’$staff->hiredate;

举例:
修改器的使用
<?php
namespace app\ index\ controller ;
use app\ index\model\Staff;
class Index
{
public function index( )
{
$staff = new Staff;
$staff->name ='左冷禅';
$staff->salary = 5000 ;
$staff->hirdate = ' 2014-10-23 '
if ($staff->save()) {
return ' 新员工: '. $staff->name.' ,ID: ' , $staff->id. ' ,添加成功';
} else {
return $staff->getError() ;
}
}
}
可在数据模板Staff.php中加入修改器
protected function setHireDateAttr ($hiredate )
{
return strtotime($hiredate )
}
设置成功,数据表的hiredate 字段将格式化成时间戳数据。



回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

友情链接
  • 艾Q网

    提供设计文章,教程和分享聚合信息与导航工具,最新音乐,动漫,游戏资讯的网站。