链接模型一起Laravel Eloquent

时间:2017-11-30 19:45:51

标签: laravel eloquent

所以我有三种模式:

挑战

用户

参赛者

挑战只有它的主键

用户只有主键

和Entrant有外键challenge_id和user_id

如果我正在质疑挑战(我有挑战ID),那么有什么最好的方法可以让所有用户都与这个挑战相关联?我基本上希望所有参赛者数据的汇总与所有用户数据相结合。我一直在研究方法hasManyThrough(https://laravel.com/docs/5.5/eloquent-relationships),但我似乎无法让它工作。

1 个答案:

答案 0 :(得分:0)

您正在寻找的代码是:

Entrant::where('challenge_id', $challengeId)->with('users')->get();

这段代码的关键是with部分,eagerly loads与每个参与者关联的用户https://website.url/api/user/。这种加载相关数据的方法解决了N + 1问题,并减少了数据库的负担。

此代码假设您已在每个雄辩模型之间设置了适当的关系......

User      hasMany   Entrant
Challenge hasMany   Entrant
Entrant   belongsTo User
Entrant   belongsTo Challenge