复杂的 SQL / Laravel Eloquent 查询
Posted
技术标签:
【中文标题】复杂的 SQL / Laravel Eloquent 查询【英文标题】:Complicated SQL / Laravel Eloquent Query 【发布时间】:2021-11-16 15:17:39 【问题描述】:我有一个表participants
,其中每个参与者都属于一个会议,这是表conferences
中的一个条目。此外,每个参与者可以提供一个答案,该答案存储在表格answers
中。
现在,我需要一个查询,它可以从所有参与者那里获得所有答案,这些参与者属于当前会议。
特别是,我想对结果进行分页,因此我希望有一种更复杂的方法,而不是简单地获取所有答案,然后检查它们是否属于本次会议的参与者。
需要明确的是,我的表格基本上存储了以下信息:
participants
- id
, conference_id
conferences
- id
answers
- id
, participant_id
【问题讨论】:
请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。 【参考方案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 模型的 hasMany
和 hasOne
关系船,并在使用 Eloquent Relation Ship
查询时添加更多约束(正如 Laravel 文档所说 All Eloquent Relation Ship 是查询构建器,因此您可以使用添加约束where
) 以获得您期望的结果。
【讨论】:
正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。以上是关于复杂的 SQL / Laravel Eloquent 查询的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 模型与 POINT/POLYGON 等使用 DB::raw 表达式