繁体   English   中英

Laravel通过关系获得一切

[英]Laravel get all with relationships

我几天前开始使用laravel。 我在其他框架上有很多经验,但是我对雄辩的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这样说统计数据。

如果您打算保留userDynamic关系的名称,则可以userDynamic关系添加一个别名:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM