Php Laravel orderby分数/日期(作为分数)

Php Laravel orderby分数/日期(作为分数),php,mysql,sql,laravel,Php,Mysql,Sql,Laravel,挖掘了很长时间,我没有太多的代码…:( 我想添加一个机制,根据帖子得分/创建日期对我网站中的帖子进行排名 因此,基本上我需要的是一个查询,它将在时间(现在)创建post.created_作为值* 并按得分/值*DESC排序 到目前为止,我已经设法按时间/分数订购了 $posts=Post::orderBy('score','DESC')->orderBy('created_at','DESC')->paginate(12);您可以使用DB::raw()函数创建排名分数,然后在orderBy方法中

挖掘了很长时间,我没有太多的代码…:( 我想添加一个机制,根据帖子得分/创建日期对我网站中的帖子进行排名

因此,基本上我需要的是一个查询,它将在时间(现在)创建post.created_作为值* 并按得分/值*DESC排序

到目前为止,我已经设法按时间/分数订购了

$posts=Post::orderBy('score','DESC')->orderBy('created_at','DESC')->paginate(12);

您可以使用DB::raw()函数创建排名分数,然后在orderBy方法中使用它

POST::select(DB::raw('(score / (created_at -NOW())) as "ordering_value", other, columns'))->orderBy("ordering_value", "desc");

我想你想要的是
NOW()-在
创建以获得帖子的年龄。

你需要解释你迄今为止所做的工作有什么错。特别是-为什么要减去一个固定值(即现在)从你的描述中我可以看出,每一个创建的页面都会改变你想做什么?它不应该改变排序顺序。我现在拥有的是一个简单的排序方式,它更喜欢得分,我想在我的网站上创建一种排序方式,它会更喜欢新的帖子,但排名较高的旧帖子也会出现在首页上。在另一个世界中ds,按一个计算分数/时间对表格排序(作为分数)=RANKGot it-本打算建议查看原始表情,但现在看来您已经得到了下面这种效果的答案。非常感谢您的帮助!效果非常好!我唯一的问题,与这个问题无关,是我到底应该如何利用我的雄辩关系来实现这一点(您可以在定义关系时添加order子句。类似于:return$this->hasMany('stuff')->orderBy('Foo');我一定会查看的,谢谢!:)已经用雄辩的selectRaw()修复了它;