모델의 이 속성이 `true`이면 `delete*` 메소드 호출시 실제로 행을 삭제하는 대신 데이터베이스의 `deleted_at` 필드의 값을 수정합니다.
이를 통해 데이터를 복원할 수있는 “휴지통”을 유지하거나 보안 추적의 일부로 보존할 수 있습니다.
논리 삭제(soft delete)를 위한 `deleted_at` 필드는 데이터베이스에 타입에 따라 `DATETIME` 또는 `INTEGER`로 지정되어야 합니다.
필드 이름은 기본적으로 `deleted_at`로 설정되어 있지만 `$deletedField` 속성에 원하는 이름으로 지정할 수 있습니다.
`$useSoftDeletes` 속성은 initialize() 함수가 아닌 class 속성에 직접 지정하여야 정상 동작합니다.
$userModel->where('idx >', 2)->delete(); 1 * Query : UPDATE `my_table_tmp_8` SET `deleted_at` = 1732506304 WHERE `idx` = 2 $userModel->findAll(); Array ( [0] => Array ( [idx] => 1 [name] => name-1732506304-1 [title] => title-1732506304-1 [email] => email-1732506304-1 [deleted_at] => ) [1] => Array ( [idx] => 3 [name] => name-1732506304-3 [title] => title-1732506304-3 [email] => email-1732506304-3 [deleted_at] => ) ) * Query : SELECT * FROM `my_table_tmp_8` WHERE `my_table_tmp_8`.`deleted_at` IS NULL
모델의 `$useSoftDeletes` 속성이 `true`이면 find* 메소드는 ‘deleted_at IS NOT null’인 행을 반환하지 않습니다.
이를 일시적으로 무시하려면 find* 메소드를 호출하기 전에 `withDeleted()` 메소드를 사용합니다.
$userModel->withDeleted()->findAll(); Array ( [0] => Array ( [idx] => 1 [name] => name-1732506304-1 [title] => title-1732506304-1 [email] => email-1732506304-1 [deleted_at] => ) [1] => Array ( [idx] => 2 [name] => name-1732506304-2 [title] => title-1732506304-2 [email] => email-1732506304-2 [deleted_at] => 1732506304 ) [2] => Array ( [idx] => 3 [name] => name-1732506304-3 [title] => title-1732506304-3 [email] => email-1732506304-3 [deleted_at] => ) ) * Query : SELECT * FROM `my_table_tmp_8`
이 메소드를 find* 메소드와 같이 사용하면 논리(soft) 삭제된 행만 리턴합니다.
$userModel->onlyDeleted()->findAll(); Array ( [0] => Array ( [idx] => 2 [name] => name-1732506304-2 [title] => title-1732506304-2 [email] => email-1732506304-2 [deleted_at] => 1732506304 ) ) * Query : SELECT * FROM `my_table_tmp_8` WHERE `my_table_tmp_8`.`deleted_at` IS NOT NULL
논리(soft) 삭제된 행을 데이터베이스 테이블에서 영구적으로 제거합니다.
$userModel->purgeDeleted(); 1 * Query : DELETE FROM `my_table_tmp_8` WHERE `my_table_tmp_8`.`deleted_at` IS NOT NULL $userModel->withDeleted()->findAll(); Array ( [0] => Array ( [idx] => 1 [name] => name-1732506304-1 [title] => title-1732506304-1 [email] => email-1732506304-1 [deleted_at] => ) [1] => Array ( [idx] => 3 [name] => name-1732506304-3 [title] => title-1732506304-3 [email] => email-1732506304-3 [deleted_at] => ) ) * Query : SELECT * FROM `my_table_tmp_8`