【发布时间】:2019-01-14 07:22:59
【问题描述】:
SELECT user_sessions.os, COUNT(*) FROM user_sessions
JOIN (SELECT MIN(created_at) AS MinCreatedAt, user_id FROM user_sessions
GROUP BY user_id) AS us2
ON (user_sessions.created_at = us2.MinCreatedAt
AND user_sessions.user_id = us2.user_id
GROUP BY user_sessions.os
这是我尝试在 Eloquent 中转换但失败的原始 SQL 查询。我的试用码是...
$q1 = self::select(DB::raw('MIN(created_at) as MinCreatedAt, user_id'))->groupBy('user_id');
$q2 = self::select(DB::raw('user_sessions.os, count(*)'));
$users = self::
select($q2)->joinSub($q1, 'us2', function ($join) {
$join->on('user_sessions.created_at = us2.MinCreatedAt AND user_sessions.user_id = us2.user_id ');
})->get();
错误
stripos() 期望参数 1 是给定的字符串对象
【问题讨论】:
-
您已经在
$q2中进行了查询选择,因此您不需要在$user中再次进行选择,这将是错误,因为select()除了字符串,但$q2是对象
标签: laravel eloquent laravel-query-builder