*hedera.contractid タイプの hederea コントラクト ID を gorm フィールドに保存しようとしましたが、エラー「」が表示されました。 struct github.com/hashgraph/hedera-sdk-go/v2 は無効なフィールドが見つかりました。accountid のフィールド エイリアスキー: 関係の有効な外部キーを定義するか、valuer インターフェイスを実装してください”
梱包契約
リーリーゴームモデル
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 中国語 Web サイトの他の関連記事を参照してください。