Laravel 5 Eloquent 查询生成器中的单引号语法错误
Syntax error with single quotes in Laravel 5 Eloquent Query Builder
我一直在尝试使用 where
子句编写大量 update
查询,并且我发现 Laravel 5.3 Eloquent 查询生成器提供了一个语法错误。
查询如下:
$query = $this->model
->where('state', "pending")
->whereRaw('created_at <= NOW() - INTERVAL 12 HOUR')
->update(['state' => "timeout"]);
翻译成这样:
update `orders`
set `state` = timeout, `updated_at` = 2016-09-21 21:47:39
where `state` = pending and created_at <= NOW() - INTERVAL 12 HOUR
此查询一直失败,因为 state
和 updated_at
列的值未用单引号引起来。
如何强制 Laravel 写入以正确放置单引号?
也许试试where('created_at', DB::raw('NOW() - ..'));
为什么要将 peding 放在单引号中? Laravel 自动转义值。
使用类似
的东西
$results = MyModel::where('user_id', Auth::user()->id)
->where('created_at','>=',\DB::raw('"'.$from.'"'))
->where('created_at','<=',\DB::raw('"'.$to.'"'))
->orderby('id','desc')
->paginate(15);
希望对您有所帮助。
我一直在尝试使用 where
子句编写大量 update
查询,并且我发现 Laravel 5.3 Eloquent 查询生成器提供了一个语法错误。
查询如下:
$query = $this->model
->where('state', "pending")
->whereRaw('created_at <= NOW() - INTERVAL 12 HOUR')
->update(['state' => "timeout"]);
翻译成这样:
update `orders`
set `state` = timeout, `updated_at` = 2016-09-21 21:47:39
where `state` = pending and created_at <= NOW() - INTERVAL 12 HOUR
此查询一直失败,因为 state
和 updated_at
列的值未用单引号引起来。
如何强制 Laravel 写入以正确放置单引号?
也许试试where('created_at', DB::raw('NOW() - ..'));
为什么要将 peding 放在单引号中? Laravel 自动转义值。
使用类似
的东西$results = MyModel::where('user_id', Auth::user()->id)
->where('created_at','>=',\DB::raw('"'.$from.'"'))
->where('created_at','<=',\DB::raw('"'.$to.'"'))
->orderby('id','desc')
->paginate(15);
希望对您有所帮助。