mercredi 21 septembre 2016

Syntax error on 'updated_at' update in Laravel 5 Eloquent Query Builder

I've been trying to write a massive update query with a where clause, and I've found that Laravel 5.3 Eloquent Query Builder makes a syntax error.

The query is the following:

$query = $this->model
    ->where('state', "'pending'")
    ->whereRaw('created_at <= NOW() - INTERVAL 12 HOUR')
    ->update(['state' => "'timeout'"]);

Which is translated to this:

update `orders`
set `state` = 'timeout', `updated_at` = 2016-09-21 21:47:39
where `state` = 'pending' and created_at <= NOW() - INTERVAL 12 HOUR

This query keeps failing since the value for the column updated_at is not written between apostrophes. I've tried inserting them manually and the query works.

How can I force Laravel to write the query like this? '2016-09-21 21:47:39'



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire