1
我有2個型號; Post
和Rating
按一對多平均值排序相關表列
Rating
模型包含一個amount
列,它指定了評分有多高。這是基於5星評級,所以數量可以是一個數值從1-5
Post
模型與評分模型和功能稱爲Ratings
返回hasMany一對多關係。
我想根據平均評分獲得5篇最新帖子。對於一般的評價,我創建了一個可以在下面
注意中可以看出功能:複數(等級)返回的hasMany關係,其中單數(額定值)返回的值是平均收視
public function Rating(){
return floor($this->Ratings()->avg('rating'));
}
是否可以使用Eloquent QueryBuilder檢索由平均評級排序的帖子?
目前我正在檢索所有帖子,然後在集合對象上使用sortBy方法,以獲得最高平均評分的方法。我這樣做的方式可以在下面看到。
$posts = Post::all();
$posts = $posts->sortByDesc(function ($post, $key) {
return $post->Rating();
});
現在,如果我只想顯示5我還是要檢索和分類這似乎不是很友好的資源(在我眼裏的一切。我沒有這個什麼證據或者說它是真的)。
所以我的問題是這樣的:這是可以使用Eloquent而不是排序FULL集合可行。
小問題:使用Eloquent而不是排序集合會對效率有任何影響嗎?
謝謝您的答覆。即使這不是我正在尋找的東西(按照我期望的方式,我已經實現了這種方式),我會使用它,因爲我認爲將每個帖子的集合進行排序會更好(特別是在長時間可能有成千上萬個帖子的情況下) – DutchDevNet