GORM이 지원하지 않는 데이터 유형: &, 잘못된 스키마
PHP 편집기 Banana의 소개에 따르면 GORM은 편리한 데이터베이스 작업 방법을 제공하는 인기 있는 Go 언어 ORM 라이브러리입니다. 그러나 GORM은 모든 데이터 유형을 지원하지 않으며 특정 데이터 유형을 처리할 때 잘못된 스키마가 발생할 수 있습니다. 이는 GORM을 사용할 때 개발자가 지원되는 데이터 유형 사용에 주의를 기울여야 하며 잠재적인 문제를 피하기 위해 데이터 스키마가 올바른지 확인해야 함을 의미합니다. GORM은 강력하지만 이러한 제한 사항으로 인해 개발자는 GORM을 사용할 때 주의해서 처리해야 합니다.
질문 내용
gorm v1.25.1, 저는 worker
、poster
和 job
模型上运行 db.automigrate()
,但遇到 [错误] 不支持的数据类型:&[]
。 worker 和 job 结构应该具有 many-to-many 关系
,而 poster 和 job 应该具有 one-to-many
关系。工人和经验、工人和偏好都应该是 one-to-many
관계를 시도합니다. 도와주세요.
package model type experience struct { gorm.Model Company int `json:"company"` JobTitle string `json:"jobTitle"` WorkerID uint } type preference struct { gorm.Model JobTitle string `json:"JobTitle"` MinPay int `json:"minPay"` MaxPay int `json:"maxPay"` WorkerID uint } type Worker struct { gorm.Model Username string `gorm:"uniqueIndex;not null" json:"username"` ...more fields Experience []experience `json:"experience"` Preference []preference `json:"preference"` AppliedJobs []Job `gorm:"many2many:worker_jobs;" json:"appliedJobs"` } type Poster struct { gorm.Model Name string `gorm:"uniqueIndex;not null" json:"name"` Email string `gorm:"uniqueIndex;not null" json:"email"` Phone string `json:"phone"` JobsPosted []Job `json:"jobsPosted"` } type Job struct { gorm.Model Title string `gorm:"uniqueIndex;not null" json:"title"` ...more fields PosterID uint `json:"posterID"` }
해결 방법
다음 코드를 사용하여 필요한 것을 얻을 수 있었습니다.
시연을 위해 협회의 관련 분야만 포함하여 모델(구조)을 단순화했습니다. 언급할 만한 가치가 있는 내용을 놓친 경우 언제든지 문의해 주시면 답변을 업데이트하겠습니다.
코드를 먼저 공유한 후 자세히 설명드리겠습니다.
으아아아귀하의 질문이 두 many2many
和 one2many
관계 모두에 적용되므로 답변을 두 부분으로 나누겠습니다.
many2many
관계
이 관계를 구현하려면 연관된 엔터티를 보유하는 슬라이스 옆에 주석 gorm:"many2many:workers_posters;joinforeignkey:workersid"
을 추가해야 합니다. 영향을 받는 필드는 다음과 같습니다.
-
posters
结构体中的worker
필드 -
workers
结构体中的poster
필드
분명히 설정하려는 필드에 따라 joinforeignkey
값을 변경해야 합니다.
one2many
관계
이 관계는 many2many
关联中创建的联接表(例如上面创建的 workers_posters
연관에서 생성되어야 하는 조인 테이블(예: 위에서 생성된 workers_posters
테이블)을 지정할 필요가 없기 때문에 더욱 간단합니다. 여기서는 다음 두 가지만 변경하면 됩니다:
-
poster
结构中添加jobs []job
분야 에서
-
job
结构中添加posterid uint
분야 에서
그래서 automigrate
메소드를 실행하면 데이터베이스에 올바른 테이블이 표시되고 모든 외래 키가 올바르게 설정된 것을 볼 수 있습니다.
말해주세요, 감사합니다!
위 내용은 GORM이 지원하지 않는 데이터 유형: &, 잘못된 스키마의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Go Language의 부동 소수점 번호 작동에 사용되는 라이브러리는 정확도를 보장하는 방법을 소개합니다.

Go Crawler Colly의 대기열 스레딩 문제는 Colly Crawler 라이브러리를 GO 언어로 사용하는 문제를 탐구합니다. � ...

GO의 어떤 라이브러리가 대기업이나 잘 알려진 오픈 소스 프로젝트에서 개발 했습니까? GO에 프로그래밍 할 때 개발자는 종종 몇 가지 일반적인 요구를 만납니다.

GO 언어에서 구조를 정의하는 두 가지 방법 : VAR과 유형 키워드의 차이. 구조를 정의 할 때 Go Language는 종종 두 가지 다른 글쓰기 방법을 본다 : 첫째 ...

Go Language에서 메시지 대기열을 구현하기 위해 Redisstream을 사용하는 문제는 Go Language와 Redis를 사용하는 것입니다 ...

Go Language의 문자열 인쇄의 차이 : println 및 String () 함수 사용 효과의 차이가 진행 중입니다 ...

Go Pointer Syntax 및 Viper Library 사용의 문제 해결 GO 언어로 프로그래밍 할 때 특히 포인터의 구문 및 사용법을 이해하는 것이 중요합니다.

GO의지도 반복이 왜 모든 값이 마지막 요소가되게합니까? Go Language에서 인터뷰 질문에 직면했을 때, 당신은 종종지도를 만납니다 ...
