2017-03-17 47 views
0

我有一个名为User的模型,它返回用户的许多属性,包括像'追随者'这样的一些数组。如何在Laravel 5.2中获取模型的简要版本?

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

目前,我决定使用此解决方法。我创建了一个继承User类的新类,并覆盖了生成无用数据的方法。

class ShortUser extends User 
{ 
    public function getFollowersAttribute() 
    { 
     return NULL; 
    } 
}