第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 gorm 中添加枚舉?

如何在 gorm 中添加枚舉?

Go
寶慕林4294392 2022-09-19 10:40:53
我正在編寫后greSQL表架構(gòu)。type TestTable struct {    ID        int    `gorm:"column:id;primaryKey;autoIncrement"`    CarType   string `gorm:"column:car_type"`}那么我怎么能添加汽車類型,如“轎車”,“掀背車”,“小型貨車”作為枚舉數(shù)據(jù)類型
查看完整描述

4 回答

?
POPMUISE

TA貢獻(xiàn)1765條經(jīng)驗 獲得超5個贊

假設(shè)您正在使用戈爾姆。首先在數(shù)據(jù)庫中創(chuàng)建一個類型。


CREATE TYPE car_type AS ENUM (

    'SEDAN',

    'HATCHBACK',

    'MINIVAN');

然后,您需要定義以下模型:


import "database/sql/driver"


type carType string


const (

    SEDAN  carType = "SEDAN"

    HATCHBACK carType = "HATCHBACK"

    MINIVAN carType = "MINIVAN"

)


func (ct *carType) Scan(value interface{}) error {

    *ct = carType(value.([]byte))

    return nil

}


func (ct carType) Value() (driver.Value, error) {

    return string(ct), nil

}


type MyTable struct {

    gorm.Model

    CarType carType `sql:"car_type"`

}


func (MyTable) TableName() string {

    return "my_table"

}


查看完整回答
反對 回復(fù) 2022-09-19
?
明月笑刀無情

TA貢獻(xiàn)1828條經(jīng)驗 獲得超4個贊

在旁注中 - 如果您決定采用稍微不同的方法:您可以將枚舉定義為int,并利用.然后,您可以使用代碼生成器來創(chuàng)建sql,也可以創(chuàng)建json /文本表示形式。例如:https://github.com/dmarkham/enumeriotaScaner/Valuer



查看完整回答
反對 回復(fù) 2022-09-19
?
吃雞游戲

TA貢獻(xiàn)1829條經(jīng)驗 獲得超7個贊

為了擴(kuò)展Nick的答案,我為自動化添加了以下內(nèi)容:


假設(shè)您有結(jié)構(gòu),則可以創(chuàng)建一個創(chuàng)建此汽車類型的方法:DBClient


func (psqlClient *DBClient) CreateCarTypeEnum() error {

    result := psqlClient.db.Exec("SELECT 1 FROM pg_type WHERE typname = 'car_type';")


    switch {

    case result.RowsAffected == 0:

        if err := psqlClient.db.Exec("CREATE TYPE car_type AS ENUM ('SEDAN', 'HATCHBACK', 'MINIVAN');").Error; err != nil {

            log.Error().Err(err).Msg("Error creating car_type ENUM")

            return err

        }


        return nil

    case result.Error != nil:

        return result.Error


    default:

        return nil

    }

}


查看完整回答
反對 回復(fù) 2022-09-19
?
撒科打諢

TA貢獻(xiàn)1934條經(jīng)驗 獲得超2個贊

更新,它將不工作,而是使用 。一旦您在數(shù)據(jù)庫中手動創(chuàng)建了自定義枚舉類型,也是如此。sql:"car_type"gorm:"car_type"



查看完整回答
反對 回復(fù) 2022-09-19
  • 4 回答
  • 0 關(guān)注
  • 282 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號