Gorm 関係エラーの診断と解決策
Gorm データベースにアクセスすると、「有効な外部データを定義する必要がある」というエラーが発生する場合があります。リレーションのキーを使用しない場合は、Valuer/Scanner インターフェイスを実装する必要があります。」この問題は、データ モデルとそれに対応するデータベース テーブル間の外部キー関係に不一致がある場合に発生します。
あなたの場合、ConfigurationDescription と LocationDescription の間の関係でエラーが発生します。 ConfigurationDescription の Location フィールドは正しく宣言されており、foreignKey 属性とreferences 属性が設定されているようです。ただし、詳しく調べると、タグが逆になっていることが明らかになります。
所属-先関係パターンの場合、foreignKey 属性は、外部エンティティに結合するモデルローカル キー フィールドと参照を指定する必要があります。属性には、外部エンティティの主キーまたは一意のキーを指定する必要があります。この場合、foreignKey は LocationID であり、参照は ID である必要があります。
問題を解決するには、ConfigurationDescription 構造体を次のように変更します。
type ConfigurationDescription struct { ID int `json:"configurationID"` Name string `json:"name"` IsActive bool `json:"isActive"` LocationID int `json:"-" gorm:"foreignKey:LocationID"` Location LocationDescription `json:"location,omitempty" gorm:"references:ID"` }
これらの調整により、外部ConfigurationDescription と LocationDescription の間の重要な関係が正しく確立され、Gorm が期待どおりにデータをロードできるようにする必要があります。
以上がGorm リレーションシップ エラー: 「リレーションに対して有効な外部キーを定義する必要があります」を修正する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。