gpt4 book ai didi

php - 模型中的 Laravel 计数函数,然后是 sortBy count()

转载 作者:可可西里 更新时间:2023-11-01 07:34:08 24 4
gpt4 key购买 nike

我正在尝试根据 Post 获得的票数对 Posts 表进行排序。投票存储在另一个表中

(Votes: post_id, user_id, vote_type)

后模型:

class Post extends Model
{
public function user()
{
return $this->hasOne(User::class);
}

public function votes()
{
return DB::table('votes')->where('post_id','=',$this->id)->sum('vote_type');
}
}

投票函数返回帖子收到的投票数(投票存储在单独的表中)

现在我试图按照他们获得的票数对所有的帖子进行排序。

Post::get()->sortBy('votes');

这将返回以下错误:

Relationship method must return an object of type Illuminate\Database\Eloquent\Relations\Relation

如能帮助解决此问题,我将不胜感激!

最佳答案

试一试

Post::get()->sortBy(function($query){
return $query->votes();
});

备选

您可以使用 withCount()因为它将在生成的模型上放置一个 {relation}_count 列。

Post::withCount(['votes'])
->orderBy('votes_count')
->get()

用于分页

引用docs有关分页的更多详细信息

Post::withCount(['votes'])
->orderBy('votes_count')
->paginate();

关于php - 模型中的 Laravel 计数函数,然后是 sortBy count(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46685865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com