2017-01-28 21 views
1

遊戲我有一個表結構如下:Laravel - 只有五載每個用戶

用戶

  • ID
  • 電子郵件
  • 密碼

遊戲

  • ID
  • 標題

和樞軸表:

game_user

  • ID
  • 得分
  • game_id
  • 用戶_ ID

現在用戶模型定義是這樣的:

class User extends Authenticatable 
{ 
    use Notifiable; 

    protected $fillable = [ 
     'name', 'email', 'password', 
    ]; 

    protected $hidden = [ 
     'password', 
    ]; 

    public function games() { 
     return $this->belongsToMany(Game::class); 
    } 
} 

現在,我有興趣做的是寫一個單一有力地表達,將讓我的用戶的數組,每個都具有最多五場比賽。像User::with('games')->get()這樣的事情當然會爲每個用戶獲取所有的遊戲。

這怎麼辦?

回答

0

使用take()方法:

User::with(['games'=>function($query){ 
      if($query->count()>5) 
      { 
       $query->take(5); 
      } 
      else 
      { 
       $query->get(); 
      } 
    }])->get(); 

還有就是要達致這沒有簡單的方法。見Tweaking Eloquent Relations

+0

我有6個遊戲user1和2個user2在我的數據庫中。您的解決方案爲用戶1加載五個,而用戶2加載一個。你想讓我分享數據庫細節和最終輸出嗎? – dotslash

+0

@dotslash你可以計算遊戲的數量。如果大於5則取5,否則取全部。更新了答案。 –

+0

仍然一樣! :(請參閱代碼和輸出:http://pastebin.com/YRW6kKTz – dotslash

相關問題