Laravel - 每个用户只加载五个游戏

时间:2017-01-28 04:19:46

标签: laravel

我的表结构如下:

用户

  • ID
  • 名称
  • 电子邮件
  • 密码

游戏

  • ID
  • 标题

枢轴表:

game_user

  • ID
  • 得分
  • game_id
  • USER_ID

现在用户模型定义如下:

class User extends Authenticatable
{
    use Notifiable;

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

    protected $hidden = [
        'password',
    ];

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

现在,我感兴趣的是编写一个单独的Eloquent表达式,它将为我提供一系列用户,每个用户最多有五个游戏。当然,像User::with('games')->get()这样的东西可以为每个用户提取所有游戏。

如何做到这一点?

1 个答案:

答案 0 :(得分:0)

使用take()方法:

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

没有简单的方法可以实现这一目标。请参阅Tweaking Eloquent Relations