Eloquent save methodが行が実際に変更されたかどうかを確認する簡単な方法はありますか? Eloquentのための何かaffected_rows
のようなもの?Laravel:モデルが変更されたかどうかを確認する方法
私がやってLaravel Eloquent update just if changes have been madeからだった唯一の回避策:
$user = Auth::user();
$timestamp = $user->updated_at;
$user->title = $request->input('title');
....
$user->save();
if($timestamp == $user->updated_at){
// row was not updated.
}
しかし、これは$timestep
変数を必要とチェックせずに、短く、これを知ることができますか?私はすべてのコントローラでそのロジックを繰り返すことは望まない。
私はこのような何かを探しています:
$user = Auth::user();
$user->title = $request->input('title');
....
if($user->save()){
// row was updated.
}
しかし、これは$user->save
戻り、両方のケースでtrue
ので、動作しません。別の方法がありますか?
ありがとうございました。私はそれを試して、それは動作します。 '$ user-> wasChanged()'の前に '$ user-> save()'を呼び出さなければなりません。 – Adam
@Adamはい、通常は '$ user-> save()'を実行し、 '$ user-> wasChanged()'を実行して、変更されたかどうかを確認できます。変更された内容を確認したい場合は、 'getChanges()'メソッドもあります。 –