【发布时间】:2018-09-09 07:19:47
【问题描述】:
我有一个类似下面的模型:
User extends Authenticatable
{
protected $appends = array('role');
public function getRoleAttribute()
{
$role = DB::table('acl_user_has_roles')->where('user_id', $this->id)
->value('role');
return $role;
}
}
当我尝试像下面这样引用这个 foo 属性时:
$user = User::find(1);
unset($user->id); // This line causes the problem.
echo $user->role;
我总是得到“null”而不是预期的“Owner”。
我错过了什么?
我在 laravel 5.5.43 中运行这个。
following post 中提到了 getKey() 函数,但它不起作用。
问题实际上是由其他原因引起的,如下面medium post所述。
【问题讨论】:
-
你使用的是什么版本的 Laravel?
-
抱歉忘了说:Laravel 5.5.43。
-
您的代码似乎没有任何问题。这实际上是您拥有的代码还是您为问题简化了代码?
-
我为这个问题简化了它。在实际代码中,我使用 $this->id 查询另一个我总是得到空结果的表,然后最终将问题缩小到 $this->id 内部 getAttribute() 总是返回 null。 $user 的其他属性似乎在 getAttribute 函数中工作得很好。
-
您能添加您的实际代码吗?我试过你上面的代码,这似乎工作得很好。
标签: laravel eloquent accessor getattribute