如何用Laravel Elotent重写这个MySQL查询?

如何用Laravel Elotent重写这个MySQL查询?,mysql,laravel-5,laravel-eloquent,Mysql,Laravel 5,Laravel Eloquent,我有这样雄辩的疑问: $data->replies = Reply::where('thread_id', '=', $thread) ->with('user') ->orderBy('created_at', 'ASC') ->paginate(20); 我还想数一数,用户写了多少回复。我能够编写这样的MySQL代码: SELECT user_id, text, (SE

我有这样雄辩的疑问:

$data->replies = Reply::where('thread_id', '=', $thread)
                ->with('user')
                ->orderBy('created_at', 'ASC')
                ->paginate(20);
我还想数一数,用户写了多少回复。我能够编写这样的MySQL代码:

SELECT user_id, text, 
(SELECT count(*) from replies AS t2 WHERE t1.user_id=t2.user_id) AS cnt 
FROM replies AS t1 
WHERE thread_id = 910 ORDER BY `t1`.`user_id` ASC

但是我不知道如何将这个查询注入到我的雄辩的查询中。

您不需要为它编写额外的查询。你可以用

$data->count();

Laravel/Eloquent支持
DB::raw()
,您可以将现有查询粘贴到其中并接收结果。话虽如此,你试过什么?Stackoverflow不是代码转换服务;你需要表现出一些努力,如果你对某件事有特殊的问题,那么就发布一个问题。我已经尝试过构建子选择,但没有成功$sub=Reply::选择('count(*)')->其中('user_id','=','55');DB::table(DB::raw(($sub->toSql())as t1”)->mergeBindings($sub)好的,但是通过说“…但是没有成功”,您有点忽略了“如果您有特定问题”这个词的要点。你有错误吗?这是怎么一回事?此外,在添加代码时,请编辑您的问题,并尽量在注释中使用尽可能少的代码。Get很难读取:将其预写到联接查询中。但这个查询似乎没有多大意义。