首页 > 解决方案 > 如何在 laravel 雄辩的 selectRaw 方法中使用子查询?

问题描述

所以我有一个名为 chats 的表,它保存每个用户的消息,并且表有 id,user_id,message 作为列

我想使用 laravel eloquent 得到这样的结果

2020 年 12 月 19 日 20/12/2020
开始聊天的用户数 5
消息数 25

我目前雄辩的查询生成器是

$data = Chat::groupBy('day')
    ->selectRaw("(SELECT COUNT(*) FROM chats group by user_id ) as user_counts,count(messages), DATE(created_at) as day")
    ->get();

标签: laravel

解决方案


您可以使用以下代码简单地计算它们:

use Illuminate\Support\Facades\DB;

Chat::groupBy('day')
    ->count(DB::raw('DISTINCT user_id'))
    ->count('message')

推荐阅读