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

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于复杂的 SQL / Laravel Eloquent 查询的主要内容,如果未能解决你的问题,请参考以下文章

复杂的 SQL / Laravel Eloquent 查询

Laravel 模型与 POINT/POLYGON 等使用 DB::raw 表达式

如何在 laravel 中执行复杂的 mysql 查询

使 Laravel 模型使用复杂查询作为表

将 PHP SQL 转换为 Laravel 查询构建器 [重复]

使用 Laravel Query Builder 进行复杂的 MySQL 内连接查询