$useSoftDeletes

모델의 이 속성이 `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_0` SET `deleted_at` = 1714610504 WHERE `idx` = 2

$userModel->findAll();

Array
(
    [0] => Array
        (
            [idx] => 1
            [name] => name-1714610504-1
            [title] => title-1714610504-1
            [email] => email-1714610504-1
            [deleted_at] => 
        )

    [1] => Array
        (
            [idx] => 3
            [name] => name-1714610504-3
            [title] => title-1714610504-3
            [email] => email-1714610504-3
            [deleted_at] => 
        )

)


* Query : SELECT * FROM `my_table_tmp_0` WHERE `my_table_tmp_0`.`deleted_at` IS NULL

withDeleted()

모델의 `$useSoftDeletes` 속성이 `true`이면 find* 메소드는 ‘deleted_at IS NOT null’인 행을 반환하지 않습니다.
이를 일시적으로 무시하려면 find* 메소드를 호출하기 전에 `withDeleted()` 메소드를 사용합니다.

$userModel->withDeleted()->findAll();

Array
(
    [0] => Array
        (
            [idx] => 1
            [name] => name-1714610504-1
            [title] => title-1714610504-1
            [email] => email-1714610504-1
            [deleted_at] => 
        )

    [1] => Array
        (
            [idx] => 2
            [name] => name-1714610504-2
            [title] => title-1714610504-2
            [email] => email-1714610504-2
            [deleted_at] => 1714610504
        )

    [2] => Array
        (
            [idx] => 3
            [name] => name-1714610504-3
            [title] => title-1714610504-3
            [email] => email-1714610504-3
            [deleted_at] => 
        )

)


* Query : SELECT * FROM `my_table_tmp_0`

onlyDeleted()

이 메소드를 find* 메소드와 같이 사용하면 논리(soft) 삭제된 행만 리턴합니다.

$userModel->onlyDeleted()->findAll();

Array
(
    [0] => Array
        (
            [idx] => 2
            [name] => name-1714610504-2
            [title] => title-1714610504-2
            [email] => email-1714610504-2
            [deleted_at] => 1714610504
        )

)


* Query : SELECT * FROM `my_table_tmp_0` WHERE `my_table_tmp_0`.`deleted_at` IS NOT NULL

purgeDeleted()

논리(soft) 삭제된 행을 데이터베이스 테이블에서 영구적으로 제거합니다.

$userModel->purgeDeleted();

1

* Query : DELETE FROM `my_table_tmp_0` WHERE `my_table_tmp_0`.`deleted_at` IS NOT NULL

$userModel->withDeleted()->findAll();

Array
(
    [0] => Array
        (
            [idx] => 1
            [name] => name-1714610504-1
            [title] => title-1714610504-1
            [email] => email-1714610504-1
            [deleted_at] => 
        )

    [1] => Array
        (
            [idx] => 3
            [name] => name-1714610504-3
            [title] => title-1714610504-3
            [email] => email-1714610504-3
            [deleted_at] => 
        )

)


* Query : SELECT * FROM `my_table_tmp_0`