如何在Laravel 5.2中获得模型的简短版本?

时间:2017-03-17 11:54:04

标签: laravel-5.2

我有一个名为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;

但似乎不起作用,该属性不会被修改。

1 个答案:

答案 0 :(得分:0)

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

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