Laravel:按关系计数排序
在这种情况下,您希望找到根据与每个项目关联的参与者数量排序的黑客马拉松。提供的表结构和模型定义给出了清晰的关系模式。
正如问题中提到的,第一次尝试获取结果包含一些缺陷。首先,不建议使用 find 获取相关模型的计数,因为它会急切地加载关系,这对于大型数据集可能效率低下。其次,查询中引用的 $this->id 是不正确的,因为它指的是用于进行查询的模型实例,而不是黑客马拉松的 ID。
要实现所需的排序,请使用 Laravel 的以下方法5.3 可以使用急切加载和命名关系:
Hackathon::withCount('participants') ->orderBy('participants_count', 'desc') ->paginate(10);
通过使用 withCount,相关参与者的计数被急切地加载到查询中,高效无需额外的数据库查询即可获取计数。 orderBy 子句然后根据participants_count属性对结果进行降序排序,有效地根据参与者数量提供最受欢迎的黑客马拉松。
以上是如何按参与者数量对 Laravel 黑客马拉松进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!