【发布时间】:2019-09-23 17:48:24
【问题描述】:
使用 User::find(1) 时属性(本例中为全名)不显示; (实际上返回一个用户实例)和访问器内部的 dd("test") 也不会被调用
我已经使用 tinker 对模型进行了 dd,并且我尝试在 $request->user() 输出上使用 dd 返回相同。
class User extends Authenticatable
{
use Notifiable,HasApiTokens;
protected $hidden = [
'id',
'master_password',
'remember_token',
'provider',
'provider_id',
'created_at',
'updated_at',
'deleted_at'
];
public function getFullNameAttribute()
{
dd("test");
return "test";
}
}
我希望字段 full_name 的用户属性返回“test”。 (如果你让 dd 进来,那就是转储和死亡。)
【问题讨论】:
-
您实际上必须通过
$user->full_name调用访问器;目前,它只是一个函数,并且在明确告知之前通常不会调用函数。或者,将其添加到$appends属性:protected $appends = ["full_name"]; -
这不保护 $appends = ['test'];公共函数getTestAttribute(){返回“测试”; } 它仍然在我的属性中显示没有测试字段
-
这可能只是在转换为
json时使用。没什么大不了的。$user->full_name(或$user->test)会触发它吗?这是评论的重点。 -
是的,但它没有显示我需要的属性
-
什么意思?如果它显示
"test",它可以工作...如果您需要该属性,可以通过$user->full_name;获得它有什么问题?您可能需要展示您如何使用$user;你把它传递给一个视图吗?通过 api 发送?