Laravel:按關係計數排序
在這種情況下,您希望找到根據與每個項目關聯的參與者數量排序的黑客馬拉松。提供的表結構和模型定義給出了清晰的關係模式。
如問題中所提到的,第一次嘗試取得結果包含一些缺陷。首先,不建議使用 find 來取得相關模型的計數,因為它會急切地載入關係,這對於大型資料集可能效率低下。其次,查詢中引用的 $this->id 是不正確的,因為它指的是用於進行查詢的模型實例,而不是黑客馬拉鬆的 ID。
要實現所需的排序,請使用Laravel 的以下方法5.3 可以使用急切加載和命名關係:
Hackathon::withCount('participants') ->orderBy('participants_count', 'desc') ->paginate(10);
透過使用withCount,相關參與者的計數被急切地加載到查詢中,高效率無需額外的資料庫查詢即可取得計數。 orderBy 子句然後根據participants_count屬性對結果進行降序排序,有效地根據參與者數量提供最受歡迎的黑客馬拉松。
以上是如何按參與者數量對 Laravel 黑客馬拉松進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!