-
라라벨 isDirty, isClean 및 wasChanged 메서드백엔드/laravel 2024. 1. 19. 20:55
1. isDirty 메서드:
- isDirty 메서드는 특정 속성이 변경되었는지 여부를 확인합니다.
- 주로 "속성이 변경되었을 때 어떤 동작을 수행해야 하는가?"와 같은 상황에서 사용됩니다.
- isDirty는 변경된 속성이 어떤 값으로 변경되었는지까지 신경쓰지 않습니다. 단순히 해당 속성이 변경되었는지 여부를 확인합니다.
$post = Post::find(1000);
$post->title = "New Title";
// Check if the 'title' attribute has been modified
if ($post->isDirty('title')) {
echo "Title has been changed";
} else {
echo "Title has not been changed";
}
if ($post->isDirty(['title', 'excerpt'])) {
echo "Title or excerpt has been changed";
} else {
echo "Title and excerpt have not been changed";
}2. isClean 메서드:
- isClean 메서드는 데이터베이스에 아직 저장되지 않은 속성의 변경 여부를 확인합니다.
- 주로 "데이터베이스에 아직 저장되지 않은 변경 사항이 있는가?"와 같은 상황에서 사용됩니다.
- isClean은 변경된 속성이 데이터베이스에 아직 저장되지 않은 경우에 true를 반환합니다.
$post = Post::find(1000);
$post->title = "New Title";
// Check if there are no unsafe changes to the model attributes
if ($post->isClean()) {
echo "Model attributes are clean";
} else {
echo "Model attributes are not clean";
}위의 예제에서는 $post 객체의 title 속성을 변경했지만,
save 메서드를 호출하여 이 변경 사항을 데이터베이스에 저장하지 않았습니다.
따라서 isClean 메서드를 사용하면 "Model attributes are not clean"이 출력됩니다.따라서 두 메서드는 서로 보완적으로 사용될 수 있습니다.
isDirty는 현재 객체의 변경 사항을 확인하고, isClean은 해당 변경 사항이 데이터베이스에 저장되지 않았는지 여부를 확인합니다.
3. wasChanged 메서드
특정 속성이 모델이 마지막으로 데이터베이스에 저장된 이후에 변경되었는지 여부를 확인하는 데 사용됩니다.
이 메서드는 특정 속성이 이전에 저장된 값을 기준으로 현재 값과 비교하여 변경 여부를 판단합니다.
$post = Post::find(1000);
$post->title = "New Title";
$post->save();
// Check if the 'title' attribute was changed since the last save
if ($post->wasChanged('title')) {
echo "Title attribute was changed";
} else {
echo "Title attribute was not changed";
}'백엔드 > laravel' 카테고리의 다른 글
라라벨 delete, truncate, destroy 메서드 (0) 2024.01.19 라라벨 updateOrCreate 및 upsert 메서드 (0) 2024.01.19 Query Builder paginate 메서 (0) 2024.01.15 Query Builder reorder 메서드 (0) 2024.01.15 Query Builder when 메소드 (0) 2024.01.15