【问题标题】:Chaining models together Laravel Eloquent将模型链接在一起 Laravel Eloquent
【发布时间】:2017-11-30 19:45:51
【问题描述】:

所以我有三个模型:

挑战

用户

参赛者

挑战只有它的主键

用户只有它的主键

并且 Entrant 有一个外键 challenge_id 和 user_id

如果我从挑战中查询(我有挑战 ID),使用 eloquent 让所有用户与该挑战相关联的最佳方式是什么?我本质上想要将所有参赛者数据与所有用户数据结合起来。我一直在研究 hasManyThrough (https://laravel.com/docs/5.5/eloquent-relationships) 方法,但我似乎无法让它发挥作用。

【问题讨论】:

  • 这实际上是一个belongsToMany,其中entrant 将是您的数据透视表。

标签: laravel eloquent


【解决方案1】:

您要查找的代码是:

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

这段代码的关键是with 部分,其中eagerly loads 是与每个参赛者关联的用户。这种加载相关数据的方法解决了N+1问题,减少了数据库的负载。

此代码假定您已在每个 eloquent 模型之间建立了适当的关系...

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

【讨论】:

  • 太棒了,感谢您的额外解释,只要有可能,就会立即加载。
猜你喜欢
  • 2014-02-05
  • 2018-12-13
  • 1970-01-01
  • 1970-01-01
  • 2018-06-17
  • 1970-01-01
  • 1970-01-01
  • 2014-03-21
  • 1970-01-01
相关资源
最近更新 更多