2016-03-27 10 views
1

シンプルに私はフィールド(timestamp) started_at,(int) durationを持っています.IDは[1, 2, 3]です。最初のオブジェクトを削除すると、次のすべての行のstarted_atフィールドを更新したい(この例では2行目と3行目です)。複数のタイムスタンプファイルを更新するLaravel ORM Eloquent

私はこのような何かしようとした:

Model::where('id', '>', $myObject->id) 
    ->update([ 
     'started_at' => DB::raw('started_at - ' . $myObject->duration), 
    ]); 

をしかし、この構造は0000-00-00 00:00:00に自分のフィールドを設定します。どうすれば修正できますか?

答えて

1

私はこの問題は、あなたのSQL構文であると思います - あなたは、そのような期間を減算することはできません - あなたは(MySQL用)DATE_SUB functionまたはINTERVALキーワードを使用する必要があります

UPDATE:あなたがすることもでき、その列の店舗のタイムスタンプ簡単な数字として。その場合、算術演算は機能します。

+0

私は 'UNIX_TIMESTAMP()'やこれに類するものをMySQLで知っていますが、私は問題のグローバルな解決策を見つけたいと思っています;) – ventaquil

+0

実際には、使用しないで簡単に間隔を増減するには良いオプションですRDBMS固有の機能PHPでタイムスタンプを作成して保存し、数学演算を実行することができます。 –

+0

私はPHP変数にデータを格納することができましたが、多くのデータに対して私は多くの更新があります:( – ventaquil

関連する問題