有时候我们会用不同的数字表示字段的含义,如用户表中的性别字段,用1表示男、2表示女;订单表中的状态字段,0表示未提交、1表示已提交等。当我们要把这些数据显示在页面时都是显示的文字,而不能是数字,这时就需要使用模型中的获取器来改变字段显示的内容。
获取器是写在模型中的方法,方法名是get + 字段名(首字母大写) + Attr 。
下面用实例说明,编写用户表中性别字段的获取器,字段名称是sex,0表示保密、1表示男、2表示女
模型文件代码:
namespace app\index\model;
use think\Model;
class User extends Model{
public function getSexAttr($val){
switch ($val) {
case '1':
return '男';
break;
case '2':
return '女';
break;
default:
return '保密';
break;
}
}
}
控制器中获取用户信息
namespace app\index\controller;
use think\Controller;
use app\index\model\User;
class Index extends Controller{
public function index(){
//模型中添加获取器后
$userInfo = User::get(1);
dump($userInfo->sex);
dump($userInfo->toArray());
//获取表中原始数据
dump($userInfo->getData());
}
}
运行结果: