模型获取器虚拟字段不返回的数据原因


有网友问在thinkphp框架中使用虚拟字段获取数据没有返回值,是什么原因,代码如下:

控制器代码:



$adminModel = new PlatformAdmin();
$post['token'] = $token;

$admin_info = $adminModel->getAuthInfo($post);

模型代码:




public function getStatusTextAttr($value,$data): string
{
$status_list = [0=>'正常',1=>'禁用'];
return isset($status_list[$data['status']])??'';
}


这位网友可能对thinkphp的get虚拟字段名称Attr() 方法不太熟悉,这种方法如果在thinkphp默认的render()
中是可以直接调用的:



{{$info->status_text}}

但是对于api返回的情况下,需要单独在获取数据的时候append(["status_text"])才能使用,代码如下:




$adminModel = new PlatformAdmin();
$post['token'] = $token;
$admin_info = $adminModel->getAuthInfo($post);
$admin_info = $admin_info->append(["status_text"]);
return json($admin_info);