如何在laravel,Subquery中进行计数

时间:2017-04-29 15:30:41

标签: php mysql laravel orm eloquent

我正在尝试在Laravel中实现此查询

"SELECT * FROM jobs 
WHERE status = 1 AND 
taskerCount = (SELECT count(*) FROM jobRequests WHERE status = 1 AND job_id = 
jobs.id)"

这就是我的尝试;

Auth::user()->jobs
        ->where('status', 1)
        ->where('taskerCount', function ($q) {
            $q->where('status', 1)
              ->where('job_id', $q->id)->count();
        });

但我收到错误:

  

类Closure的对象无法转换为int。

1 个答案:

答案 0 :(得分:0)

使用原始表达式而不是-count()。

您可以查看此documentation here

来自laravel的原始查询示例:

$users = DB::table('users')
                 ->select(DB::raw('count(*) as user_count, status'))
                 ->where('status', '<>', 1)
                 ->groupBy('status')
                 ->get();

确保将计数定义为名称。