我想在laravel 5中建立查询
SELECT * FROM tbl WHERE updated_at IN (
SELECT max(updated_at) FROM tbl
WHERE created_at BETWEEN $begin_time AND $end_time
GROUP BY ip_address)
我的代码:
$sqlStr = self::select('*')
->whereIn('updated_at', function($query){
return $query->select(self::raw('max(updated_at)'))
->whereRaw('created_at >= $begin_time)
->whereRaw('created_at <= $end_time)
->groupBy('ip_address');
})->toSql();
var_dump(($sqlStr));die;
错误信息:
Grammar.php第58行中的ErrorException:
strtolower()期望参数1为字符串,给定对象
请帮我。
最佳答案
当您编写self::raw('max(updated_at)')
时,生成的SELECT max(updated_at) FROM tbl
已经在select命令中。以下代码将起作用:
$sqlStr = self::select('*')
->whereIn('updated_at', function($query) {
$query->selectRaw('max(updated_at)')
->from('tbl')
->whereRaw('created_at >= $begin_time')
->whereRaw('created_at <= $end_time')
->groupBy('ip_address');
})->toSql();
关于mysql - 在Laravel 5中构建复杂的查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38912524/