ホームページ > バックエンド開発 > Golang > Golang を使用して GORM でカスタム セット データ型を保持するにはどうすればよいですか?

Golang を使用して GORM でカスタム セット データ型を保持するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-24 00:53:09
オリジナル
224 人が閲覧しました

How to Persist Custom Set Data Types in GORM with Golang?

GORM Golang を使用したカスタム Set データ型の永続化

GORM で 1 対多の関係を定義するためにカスタム Set データ型を使用する場合、無効な SQL タイプであるためにエラーが発生する可能性があります。これを解決するには、カスタム タイプの Scanner インターフェイスと Driver Valuer インターフェイスを実装する必要があります。これにより、データベース ドライバーはデータベースにデータを保存および取得する方法を理解できるようになります。

スキャナ インターフェイス

スキャナ インターフェイスには次のメソッドがあります:

func (data *CustomType) Scan(value interface{}) error
ログイン後にコピー

このメソッドは、データベースから値をスキャンしてカスタム タイプに変換するために使用されます。データベース値をカスタム型に変換するには、このメソッドを実装する必要があります。

Driver Valuer インターフェイス

Driver Valuer インターフェイスには次のメソッドがあります:

func (data *CustomType) Value() (driver.Value, error)
ログイン後にコピー

このメソッドは、カスタム型をデータベース値に変換するために使用されます。カスタム タイプをデータベースが理解できる形式に変換するには、このメソッドを実装する必要があります。

マップであるカスタム タイプ UserAccess について考えてみましょう。 Interface{}]struct{}.

type UserAccess map[interface{}]struct{}

func (data *UserAccess) Value() (driver.Value, error) {
    return data.ConvertJSONToString(), nil
}

func (data *UserAccess) Scan(value interface{}) error {
    *data = data.ConvertStringToJson(valueString)
}
ログイン後にコピー

この例では、ConvertStringToJson と ConvertJSONToString UserAccess と JSON 文字列などのデータベース互換形式との間で変換を行うヘルパー関数です。

これらのインターフェイスを実装することで、カスタム データ型の処理方法をデータベース ドライバーに通知し、カスタム データ型を永続化できるようになります。あなたのデータベース。

以上がGolang を使用して GORM でカスタム セット データ型を保持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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