我有一个简单的结构,一个帖子有很多票。投票具有“值”属性,即 1 或 -1
在阅读所有帖子时,我很乐意为每个帖子选择这个总和到帖子级别的自定义属性中。目前我这样做
$posts = Post::where('published_at', '<=', $date)
->orderBy('published_at', 'desc')
->simplePaginate(20);
$posts->each(function($post) {
$post->overallRating = $post->getRating();
});
这是完全有效的,但是我认为对数据库进行 20 次查询以读取评级并不是那么好。有没有办法在实际获取帖子时简化这一点?
public function getRating()
{
return $this->votes->sum('value');
}