The following code output error like 'UNIX_TIMESTAMP(NOW()) > (UNIX_TIMESTAMP(value)+60' column doesn't exist.
How do I write it in eloquent style?
$affected_num = \App\TmpSetting
::where('name', 'last_schedule')
->where('UNIX_TIMESTAMP(NOW()) > (UNIX_TIMESTAMP(value)+60')
->update(['value', 'NOW()']);
This code works, but $affected_num is an empty array.
$table = env("DB_PREFIX"). "tmp_setting";
$affected_num = \DB::select(
\DB::raw(
"
UPDATE
$table
SET
value = NOW()
WHERE
name = :var AND
UNIX_TIMESTAMP(NOW()) > (UNIX_TIMESTAMP(value)+60)
"
), array(
'var' => 'last_schedule',
));
It turns out I need to use whereRaw
whereRaw('UNIX_TIMESTAMP(NOW()) > (UNIX_TIMESTAMP(value)+60')
So we have
$affected_num = \App\TmpSetting
::where('name', 'last_schedule')
->whereRaw('UNIX_TIMESTAMP(NOW()) > (UNIX_TIMESTAMP(value)+60')
->update(['value', DB::raw('NOW()')]);