使用GORM Golang 保留自訂Set 資料型別
使用自訂Set 資料型別在GORM 定義一對多關係時,由於SQL 類型無效,您可能會遇到錯誤。為了克服這個問題,您需要為您的自訂類型實作 Scanner 和 Driver Valuer 介面。這將使資料庫驅動程式了解如何在資料庫中儲存和檢索資料。
Scanner 介面
Scanner 介面具有以下方法:
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中文網其他相關文章!