这是我的 sql,我正在努力将其转换为 laravel 5.8 查询生成器语法。
SELECT CC AS CountOfVisits, Count(CC) AS Users
FROM
(
SELECT user_id, count(user_id) AS CC FROM mytable
GROUP BY user_id
) AS CC
GROUP BY CC;
我尝试过这个:
$frequency= DB::connection('mysql2')
->select(DB::raw('CC AS CountOfVisits'), DB::raw('Count(CC) AS Users'))
->from(function($sq)
{
$sq->select(DB::raw('user_id, count(user_id) AS CC FROM '))
->from('mytable')
->groupBy('user_id');
})
->groupBy('CC')
->get();
它的错误
Argument 1 passed to Illuminate\Database\Connection::prepareBindings() must be of the type array, object given, called in /var/app/portal/vendor/laravel/framework/src/Illuminate/Database/Connection.php on line 665
任何帮助都会非常感谢
最佳答案
我认为您遇到的问题是返回的连接需要完整查询的字符串,并在第二个参数上进行附加绑定(bind)。如果您愿意,您仍然可以首先使用照亮的查询构建器构建它,然后使用生成的字符串运行选择。
$query = DB::query()
->select('CC AS CountOfVisits', DB::raw('count(CC) AS Users'))
->fromSub(function (\Illuminate\Database\Query\Builder $query) {
$query->select('user_id', DB::raw('count(user_id) AS CC '))
->from('mytable')
->groupBy('user_id');
}, 'CC')
->groupBy('CC');
$result = DB::connection()->select($query->toSql());
关于mysql - Laravel 中的嵌套查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58427823/