我有一个名为User的模型,它返回用户的许多属性,包括一些数组,如'粉丝'。
class User extends Authenticatable
{
protected $appends = [
'followers'
];
public function followers()
{
$followers = ShortUser::join('friends', function ($join){
$join->on('users.id', '=', 'friends.user_id')->where('friends.friend', '=', $this->id);
});
return $followers;
}
public function getFollowersAttribute()
{
if (!$this->followers())
return null;
return $followers = $this->followers()->get();
}
}
我希望能够有时检索具有所有细节的用户(现在就是这样)
User::where('user_id', $user_id)
有时用较少的细节(只是简短的)来检索它们,不包括例如属性"粉丝",使用:
User::where('id', $user_id)->brief()
//or
User::where('id', $user_id)->exclude(['followers'])
我怎样才能做到这一点?
我尝试使用范围方法来设置
$this->appends['followers']=NULL;
但似乎不起作用,该属性不会被修改。
答案 0 :(得分:0)
目前,我决定使用此解决方法。我创建了一个继承User类的新类,并重写了生成无用数据的方法。
class ShortUser extends User
{
public function getFollowersAttribute()
{
return NULL;
}
}