【Laravel】Eloquentのupdateとsaveメソッドの違いについて

Laravel

こんにちは!

今回はLaravelのデータ保存の際のupdateとsaveメソッドの処理の違いについてお話ししていきたいと思います。

updateとsaveメソッドの違いについて

Laravel開発において、データを更新する際にupdateやsaveメソッドを使うことがあるかと思いますが、この2つのメソッドの処理の仕方に違いがありますので、その違いについて説明していきたいと思います。

以下の違いがあります。

  • updateはすでにテーブルにあるデータを無視してデータを入れる
  • saveはすでにテーブルにあるデータを考慮して、更新すべきデータだけ更新している。

このような違いがあります。

例えば、

 update()を使った場合

$params = [
            'id'        => $request->todo_id,
            'todo_date' => $request->todo_date,
            'todo_body' => $request->todo_body,            
        ];

        $data = ToDo::where('id', $request->todo_id)->update($params);
        
        return $data;

save()を使った場合

$todo = ToDo::find($request->todo_id)
$todo->todo_date = $request->todo_date;
$todo->todo_body = $request->todo_body;
$todo->save();

この場合、もし$request->todo_dateと$request->todo_bodyがすでにテーブルに登録されていたら…

  • update()はupdated_atカラムが更新される
  • save()はupdated_atカラムが更新されない

という違いがあります。

このような違いを理解した上で適時使用するよう気をつけましょう!

コメント

タイトルとURLをコピーしました