*hedera.contractid 유형의 hedera 계약 ID를 gorm 필드에 저장하려고 했지만 오류가 발생했습니다. " struct github.com/hashgraph/hedera-sdk-go/v2 잘못된 필드에서 발견되었습니다. 필드 accountid에 대한 aliaskey: 관계에 대한 유효한 외래 키를 정의하거나 평가자 인터페이스를 구현합니다 "
포장계약
으아아아고름 모델
import ( "fmt" "github.com/.../scanner/controllers/blockchain" database "github.com/.../scanner/db" model "github.com/.../scanner/models" "github.com/rs/xid" "gorm.io/gorm" ) func deploycontract() *gorm.db { //connect to database db, err := database.connecttodb() //if db connection fails if err != nil { panic(err) } //init model var modelcontract model.contract //check if a contract has been deployed if err := db.first(&modelcontract); err.error != nil { //no deployment found //migrate the schema db.automigrate(&model.contract{}) //deploy contract contract, _ := blockchain.deploycontract() //create record // generate random id id := xid.new() // create db.create(&model.contract{ id: id.string(), contractid: contract.receipt.contractid, gasused: contract.callresult.gasused, transactionid: fmt.sprint(contract.transactionid), timestamp: contract.consensustimestamp, chargefee: fmt.sprint(contract.transactionfee), payeraccount: fmt.sprint(contract.transactionid.accountid), status: fmt.sprint(contract.receipt.status), }) } return db }
맞춤 데이터 유형의 경우 데이터베이스에 값을 저장하고 검색하는 방법을 지정해야 합니다. 이는 scanner
和 valuer
인터페이스를 구현하여 수행됩니다.
그러나 hedera.contractid
是在另一个包中定义的,因此您需要创建自己的 contractid
이러한 인터페이스를 구현한 덕분입니다. 다음과 같은 것:
또한, 어디에 사용되든 hedera.contractid
转换为 model.contractid
될 것입니다. 예:
위 내용은 Gorm: 필드에 구조체를 저장하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!