查找过去 24 小时内帖子最高的用户,laravel Eloquent

Nic*_*cis 4 laravel eloquent

如何在laravel中找到过去24小时内创建的帖子最高的用户?按帖子数量降序排列。

Ken*_*rna 5

如果我没记错的话,您是在询问在过去 24 小时内创建的帖子数量最多的用户。

为此,请执行以下操作:

$users = User::withCount(['posts' => function ($query) {
            $query->where('created_at', '>=', carbon()->now()->subDay());
        }])->orderBy('posts_count', 'DESC')
            ->get();
Run Code Online (Sandbox Code Playgroud)

正如文档所述,您可以向查询添加约束。

计算相关模型

如果您想计算关系中的结果数量而不实际加载它们,您可以使用该 withCount方法,它将{relation}_count在您的结果模型上放置一列。例如:

$posts = App\Post::withCount('comments')->get();

foreach ($posts as $post) {
    echo $post->comments_count;
}
Run Code Online (Sandbox Code Playgroud)

您可以为多个关系添加“计数”以及向查询添加约束:

$posts = Post::withCount(['votes', 'comments' => function ($query) {
    $query->where('content', 'like', 'foo%');
}])->get();

echo $posts[0]->votes_count;
echo $posts[0]->comments_count;
Run Code Online (Sandbox Code Playgroud)