【问题标题】:Complicated SQL / Laravel Eloquent Query复杂的 SQL / Laravel Eloquent 查询
【发布时间】:2021-11-16 15:17:39
【问题描述】:

我有一个表participants,其中每个参与者都属于一个会议,这是表conferences 中的一个条目。此外,每个参与者可以提供一个答案,该答案存储在表格answers中。

现在,我需要一个查询,它可以从所有参与者那里获得所有答案,这些参与者属于当前会议

特别是,我想对结果进行分页,因此我希望有一种更复杂的方法,而不是简单地获取所有答案,然后检查它们是否属于本次会议的参与者。

需要明确的是,我的表格基本上存储了以下信息:

  • participants - id, conference_id
  • conferences - id
  • answers - id, participant_id

【问题讨论】:

  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。

标签: php sql laravel eloquent


【解决方案1】:

您可以使用 HasManyThrough。 我认为 Laravel Doc 中的示例非常适合您的情况。 Laravel Doc example

【讨论】:

  • 好的,我明白你的意思了。但是我可以对这个查询的结果进行分页吗?由于这是一个集合,我不知道该怎么做。
  • 如果您使用 Conference->answers,您将获得 Eloquent/Collection,如果您使用 Conference->answers(),您将获得从 Builder 扩展的 HasManyTrough 关系。所以你可以使用类似会议->answers()->paginate(15)
  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:

您可以使用 Laravel Eloquent 模型的 hasManyhasOne 关系船,并在使用 Eloquent Relation Ship 查询时添加更多约束(正如 Laravel 文档所说 All Eloquent Relation Ship 是查询构建器,因此您可以使用添加约束where) 以获得您期望的结果。

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2015-12-06
  • 2014-08-18
  • 2015-05-16
  • 2021-02-02
  • 2019-02-15
  • 2013-05-30
  • 1970-01-01
  • 2015-02-13
  • 1970-01-01
相关资源
最近更新 更多