18
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[laravel] isDirty()メソッドの使い方

Last updated at Posted at 2017-10-05

24歳初心者です。

フォーム入力画面でユーザーが特に項目を変更しないまま、保存ボタンを押しちゃった場合
、「サーバーサイドでどのようにそれを検知すればよいのか」ということを調べていたらisDirtyメソッドに辿り着きました。

##isDirtyメソッドとは何か?
Eloquentモデルをデータベースで照会して編集されたかどうかを調べる事が出来る。
Model::originalという連想配列の中には「編集前の」データを持っていています。
Model::attributesには「現在保持している」データがあります。
isDirtyメソッドはこの2つのデータを比べて一致しなければ真を返します。

##実用例

$change = Change::findOrFail($id);
$other_model = OtherModel::findOrFail($id);

$change->tall = 160
//値の更新

if($change->isDirty())
{
 $change->update();
 $other_model->update();
}

上記は$changeの更新で他のDBのレコードを更新するか否かを判断する場合の書き方です。
isDirty()メソッドの処理をupdate()メソッドよりも上に記載することによってDBにレコードが保存される前にチェックする事が出来ます。

ただisDirtyメソッドはCollectionなど配列で返ってくるものに対しては機能しないので、foreachなどで一個ずつ取り出す処理をしてあげないといけません。

参考URL
http://www.larajapan.com/category/eloquent%E3%82%92%E3%82%88%E3%81%8F%E7%9F%A5%E3%82%8B/
https://stackoverflow.com/questions/28836013/what-does-isdirty-means-in-laravel

18
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?