ホームページ > バックエンド開発 > Golang > Gorm で Belongs-To 関係の外部キーを正しく実装するにはどうすればよいですか?

Gorm で Belongs-To 関係の外部キーを正しく実装するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-19 00:01:02
オリジナル
607 人が閲覧しました

How to Correctly Implement Foreign Keys in Gorm for a Belongs-To Relationship?

Gorm 関係エラー: 外部キーの適切な実装

Gorm では、モデル間の関係を確立することが、効率的なデータの取得と操作にとって重要です。最近報告された問題は、データベースからデータを取得しようとしているときに、特に「Location」フィールドが外部キーとして使用されているときに発生したエラーに関するものです。

問題を理解するには、定義されたデータ モデルを調べることから始めましょう。リレーションシップの場合:

// LocationDescription model
type LocationDescription struct {
    ID       int    `json:"locationID"`
    Name     string `json:"name"`
    IsActive bool   `json:"isActive"`
}

// ConfigurationDescription model
type ConfigurationDescription struct {
    ID         int                 `json:"configurationID"`
    Name       string              `json:"name"`
    IsActive   bool                `json:"isActive"`
    LocationID int                 `json:"location_id"`
    Location   LocationDescription `json:"location,omitempty" gorm:"foreignKey:ID;references:LocationID"`
}
ログイン後にコピー

エラーが発生しました。「構造体モデルに無効​​なフィールドが見つかりました。ConfigurationDescription のフィールド Location。リレーションに対して有効な外部キーを定義する必要があります。」 Gorm が「Location」フィールドと「LocationDescription」テーブルの主キーを正しく結合できないことを示します。コードを調べると、「foreignKey」タグと「references」タグが誤って適用されていることが明らかです。

Belongs-To 関係の場合、「foreignKey」は参照するモデルローカル キー フィールドを指定する必要があります。外部エンティティの主キーまたは一意のキー。この場合、外部エンティティは「LocationDescription」であり、その主キーは「ID」です。したがって、適切な構成は次のとおりです。

    Location   LocationDescription `json:"location,omitempty" gorm:"foreignKey:LocationID;references:ID"`
ログイン後にコピー

この調整を行った後、Gorm エラーが解決され、データベースから正常にデータを取得できるようになります。モデル間の適切な関係を確立するには、外部キーと参照が正しく定義されていることを確認することが不可欠であることに注意してください。

以上がGorm で Belongs-To 関係の外部キーを正しく実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート