Laravel得到所有关系

时间:2016-10-08 09:40:23

标签: php laravel eloquent

几天前我开始使用laravel。我在其他框架方面有很多经验,但我对Eloquent ORM和关系进行了一些分析。

假设用户有另一个表格来保存其统计信息。我建立了这种关系。现在用户也有很多帖子,所以我也宣布了这一点。

class User extends Authenticatable
{
    public function userDynamic()
    {
        return $this->hasOne('App\UserDynamic', 'user_id', 'id');
    }

    public function posts()
    {
        return $this->hasMany('App\Post');
    }
}

现在我们有其他型号:

class UserDynamic extends Model
{
    public function user()
    {
        return $this->belongsTo('App\User');
    }

}

class Post extends Model
{
    public function user()
    {
        $this->belongsTo('App\User','user_id','id');
    }
}

我想我到目前为止是对的。尝试检索时出现问题。 对于一个用户我很好,因为我不能

$user ( get user from auth token)
$user->stats = $user->userDynamic()->first();
$user->posts = $user->posts()->paginate($this->profilePagination);

哪个好,我得到的用户的属性统计信息包含属性帖子中的所有信息和帖子。

如果我试图让所有用户都像下面那样

$users = User::with('userDynamic')->active()->notPrivate();
return $users->paginate($this->followersPagination);

所有用户都是这样返回的

  {
      "id": 26,
      "name": "LL",
      "url": "",
      "personal_quote": "",
      "private": "0",
      "active": "1",
      "user_dynamic": {
        "user_id": 26,
        "following_count": 7,
        "followers_count": 0,
        "posts_count": 0,
        "likes_count": 0
      }

如何更改分配的属性名称?而不是像user_dynamic那样说明统计数据。

1 个答案:

答案 0 :(得分:0)

如果您打算保留userDynamic关系的名称,则只需添加该关系的别名即可:

public function stats()
{
    return $this->userDynamic();
}