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

此查询一直失败,因为 stateupdated_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);

希望对您有所帮助。