sql 使用多个 table select 查询生成器 laravel 4

sql to query builder laravel 4 with multiple table select

我想在 laravel 4.2 的查询构建器中翻译这个 sql 请求,你能帮我吗?

提前致谢!

Table api_calls => 编号 | key_id |服务器 | created_at

Table api_key => 编号 |钥匙 | created_at

SQL :

SELECT K.key FROM api_key as K

WHERE
(SELECT count(id) FROM api_calls WHERE server = $server AND key_id = K.id AND created_at >= $DateSeconds) < 10

AND 
(SELECT count(id) FROM api_calls WHERE server = $server AND key_id = K.id AND created_at >= $DateMinutes) < 500

GROUP BY K.key

像那样使用 join ang 聚合:

DB::table('api_key as K')
    ->select('K.*')
    ->join('api_calls as ac1', function ($join) use ($server, $DateSeconds) {
        $join->on('ac1.server', '=', DB::raw($server));
        $join->on('ac1.key_id', '=', 'K.id');
        $join->on('ac1.created_at', '>=', DB::raw($DateSeconds));
     })
     ->join('api_calls as ac2', function ($join) use ($server, $DateMinutes) {
        $join->on('ac2.server', '=', DB::raw($server));
        $join->on('ac2.key_id', '=', 'K.id');
        $join->on('ac2.created_at', '>=', DB::raw($DateMinutes));
     })
     ->having(DB::raw('COUNT(ac1.id)'), '<', 10)
     ->having(DB::raw('COUNT(ac2.id)'), '<', 500)
     ->groupBy('K.id')
     ->get();