簡體   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