2016-04-20 20 views
1

は次のように次のコード出力エラー「UNIX_TIMESTAMP(NOW())>(UNIX_TIMESTAMP(値)は、60」の列は存在しません。Laravel雄弁なフィールド計算

を私は雄弁なスタイルでそれを書くにはどうすればよい?

$affected_num = \App\TmpSetting 
     ::where('name', 'last_schedule') 
     ->where('UNIX_TIMESTAMP(NOW()) > (UNIX_TIMESTAMP(value)+60') 
     ->update(['value', 'NOW()']); 

このコードは動作しますが、$のaffected_numは空の配列です。

$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', 
    )); 
+0

を持っています。 – aldrin27

答えて

0

それは私がwhereRaw

01を使用する必要が判明します

だから我々は最初のものは雄弁なスタイルになりました

$affected_num = \App\TmpSetting 
     ::where('name', 'last_schedule') 
     ->whereRaw('UNIX_TIMESTAMP(NOW()) > (UNIX_TIMESTAMP(value)+60') 
     ->update(['value', DB::raw('NOW()')]);