>백엔드 개발 >Golang >Golang GORM은 소프트 삭제와 유사하게 archived_at를 구현합니다.

Golang GORM은 소프트 삭제와 유사하게 archived_at를 구현합니다.

WBOY
WBOY앞으로
2024-02-05 22:33:12461검색

Golang GORM 实现类似于软删除的archived_at

질문 내용

GORM V1을 사용하고 있습니다. 요구 사항이 있습니다. 쿼리 레코드에 NULL에 대한 GORM과 같은 deleted_atarchived_at 列。实体可以存档和取消存档,默认情况下我们希望使用 archived_at을 추가하고 싶습니다.

현재 내 생각은 GORM 콜백을 사용하여 콜백을 등록하는 것입니다

  1. gorm:query 콜백 전에 콜백을 등록하세요.
  2. 스키마/모델에 archived_at 필드가 필요한지 확인하세요.
  3. 해당 필드가 존재하는 경우 필수 조건을 추가해 주세요.

좋게 들리지만 아카이브의 Unscoped() 에 해당하는 항목을 효율적으로 복사하는 방법은 무엇입니까?

  • 보관된 기록을 얻는 관용적인 방법은 무엇인가요? 필요한 콜백에 archived_at 열을 추가해야 하는지 어떻게 표시하나요?
  • 또한 보관된 레코드만 가져오고 싶은 상황이 발생합니다(여기서 archived_at는 NULL이 아닙니다).

EDIT - 제 사용 사례는 한 필드를 다른 필드 대신 사용하는 대신 deleted_atdeleted_atarchived_at 필드를 모두 사용하는 것입니다. 엔터티 보관 기능을 추가하면서 일시 삭제 기능을 유지하고 싶습니다. 사용자는 단순히 보관된 다음 삭제(일시 삭제)될 수 있습니다.


정답


피드백을 초대하세요. 이것이 내가 지금 생각하고 있는 것입니다.

callback.go

으아악

scope.go

으아악

main.go

으아악

위 내용은 Golang GORM은 소프트 삭제와 유사하게 archived_at를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제