LoginSignup
0
0

【laravel】isDirtyとwasChangedの違い

Posted at

取得したEloquentモデルに変更があったかを判定したいとき、どのときにどっちを使えばいいかよく忘れてしまうのでメモ

最初に結論

  • DBに反映する前 - isDirty
  • DBに反映した後 - wasChanged

isDirty

Eloquentモデルが取得されてから値を変更したとき、DBに反映する前まではtrueを返し、DBに反映された後はfalseを返す

DBに反映する前まではtrue.php
use App\Models\User;
 
$user = User::create([
    'first_name' => 'Taylor',
    'last_name' => 'Otwell',
    'title' => 'Developer',
]);
 
$user->title = 'Painter';
 
$user->isDirty(); // titleの値が変わっているのでtrue
 
$user->save(); // ここでDBに保存
 
$user->isDirty(); // 以降はfalseを返す

wasChanged

Eloquentモデルが取得されてから値を変更したとき、DBに反映する前まではfalseを返し、DBに反映された後はtrueを返す

DBに反映された後からtrue.php
use App\Models\User;
 
$user = User::create([
    'first_name' => 'Taylor',
    'last_name' => 'Otwell',
    'title' => 'Developer',
]);
 
$user->title = 'Painter';
 
$user->wasChanged(); // まだDBに反映していないのでfalse
 
$user->save(); // ここでDBに保存
 
$user->wasChanged(); // 保存したのでtrueを返すようになる

参考

0
0
0

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
0
0