Laravelでデータ更新時に差分を確認するisDirty()とgetDirty()

laravel-isdirty-getdirty
  • URLをコピーしました!

Laravelで既に登録されているデータ更新する際に、Eloquentsave()を利用することがあると思いますが、データ更新されていない、例えば更新画面で何も入力せずにフォームボタンを押した場合、update()とは違ってデータ更新することはありません。
つまり、save()の中では既存データ更新データ差分を見て更新しています。
その差分を意図的に確認したい場合に、isDirty()getDirty()関数を利用ます。

目次

isDirty()で更新データを確認

データベースに登録する前に、isDirty()データ更新されたかどうか確認できます。

データ全体を判定

1つでも更新されるデータが存在するかを調べる場合は以下のように記述します。

更新するデータが1つでもあればtrue、1つも無ければfalseを返します。

キーを指定して個別に判定

また、フィールド名指定してデータ更新されているかどうかも確認できます。

nameの値が更新されていればtrue、更新前と同じ値ならfalseを返します。
さらに、キー配列で指定することで、複数同時に調べることもできます。

ただし、判定結果がそれぞれ配列で返ってくるわけではなく、全体を見て1つでも更新データがあればtrue、1つも無ければfalseを返します。

getDirty()で更新データを取得

更新されたデータ取得したい場合は、getDirty()を利用します。
使い方は簡単です。

更新データがある場合は配列で返します。

ない場合は配列を返します。

これを利用すると、どのフィールドがどう更新されるを確認することができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次