所以我有三种模式:
挑战
用户
参赛者
挑战只有它的主键
用户只有主键
和Entrant有外键challenge_id和user_id
如果我正在质疑挑战(我有挑战ID),那么有什么最好的方法可以让所有用户都与这个挑战相关联?我基本上希望所有参赛者数据的汇总与所有用户数据相结合。我一直在研究方法hasManyThrough(https://laravel.com/docs/5.5/eloquent-relationships),但我似乎无法让它工作。
答案 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