【发布时间】:2016-08-12 07:41:01
【问题描述】:
我想在 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 是字符串,给定对象
请帮帮我。
【问题讨论】:
-
你的 $begin_time 和 $end_time 是字符串还是 Carbon 日期?此外,您应该使用绑定参数而不是连接字符串来插入变量,这样您将更加安全,并且您将避免在 whereRaw 语句中缺少 ' 时可能遇到的问题