괴발개발 성장기

Study/Go 언어

[Golang] Xorm에 AllCols() 이걸 사용할 때 bool 타입은 업데이트가 안된다.

지니유 2023. 8. 2. 08:35
반응형

# 배경

입사 초기에 데이터 Update를 하는데 다 바뀌는데 bool 타입의 값이 변경되지 않았다.

당시에는 경험도 지식도 없어서 해결하는데 많은 시간이 걸렸다.

 

# 문제의 코드

_, err := common.GetDB(ctx).Where("id = ?", campaign.Id).AllCols().Update(campaign)

AllCols() : 모든 컬럼을 업데이트 시켜준다.

그런데 bool 타입의 컬럼은 false 값만 된다.

 

# 해결 방법

1) UseBool("컬럼명")을 적으면 bool 타입의 컬럼명을 작성한다.

 

_, err := common.GetDB(ctx).Where("id = ?", campaign.Id).UseBool("컬럼명").AllCols().Update(campaign)

 

2) Cols("컬럼명, 컬럼명..")을 적어서 업데이트 하고 싶은 컬럼명만 작성한다.

_, err := common.GetDB(ctx).Where("id = ?", campaign.Id).Cols("컬럼명, 컬럼명").Update(campaign)

 


 

나는 보통 cols를 사용해서 컬럼명을 쓴다. 

상태값 바꾸고 싶을때 사용, 날짜를 바꿀 때  등등 상황에 맞게 원하는 컬럼값을 변수로 지정해서 하나의 업데이트 함수를 다양하게 사용한다.

 

반응형