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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 go ent 框架中創(chuàng)建基本實(shí)體

在 go ent 框架中創(chuàng)建基本實(shí)體

我是高朗的新手,并且正在使用ent框架作為ORM。每個(gè)模式都應(yīng)該有字段和,我想寫(xiě)一次,而不是為每個(gè)模式編寫(xiě)它,即:created_atupdated_atfunc (User) Fields() []ent.Field {    return []ent.Field{        field.Int("id"),        field.String("name").MaxLen(70),        field.String("email"),        field.Time("created_at").Default(time.Now).Immutable(),        field.Time("updated_at").Default(time.Now).UpdateDefault(time.Now),    }}.....func (Product) Fields() []ent.Field {    return []ent.Field{        field.Int("id"),        field.String("name").MaxLen(70),        field.Float("price"),        field.Time("created_at").Default(time.Now).Immutable(),        field.Time("updated_at").Default(time.Now).UpdateDefault(time.Now),    }}我來(lái)自O(shè)OP lagnageus,在那里我可以用所有其他實(shí)體從中繼承的某種東西來(lái)做到這一點(diǎn),但不確定在這種情況下該怎么做。BaseEntity
查看完整描述

1 回答

?
拉丁的傳說(shuō)

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊

您可以使用 MixIn,它允許您創(chuàng)建可重用的耳影片段??梢允褂媒M合將架構(gòu)代碼注入到其他架構(gòu)中,因此,您可以在另一個(gè)架構(gòu)中定義時(shí)間戳值,并將其混合在需要的其他架構(gòu)中,以便您的時(shí)間戳(基本實(shí)體)mixin架構(gòu)將如下所示


package schema


import (

    "entgo.io/ent"

    "entgo.io/ent/schema/field"

    "entgo.io/ent/schema/mixin"

    "time"

)


type TimeStamp struct {

    mixin.Schema

}


func (TimeStamp) Fields() []ent.Field {

    return []ent.Field{

        field.Time("created_at").Default(time.Now).Immutable(),

        field.Time("updated_at").Default(time.Now).UpdateDefault(time.Now),

    }

}

現(xiàn)在,當(dāng)它被定義并且您需要將此時(shí)間戳架構(gòu)注入到其他架構(gòu)中時(shí)。為此,您所要做的就是將其注入該架構(gòu)的MixIn()中,如下所示



func (User) Mixin() []ent.Mixin {

    return []ent.Mixin{

        TimeStamp{},

    }

}

......


func (Product) Mixin() []ent.Mixin {

    return []ent.Mixin{

        TimeStamp{},

    }

}

因此,您的最終架構(gòu)將如下所示。



func (User) Mixin() []ent.Mixin {

    return []ent.Mixin{

        TimeStamp{},

    }

}


func (User) Fields() []ent.Field {

    return []ent.Field{

        field.Int("id"),

        field.String("name").MaxLen(70),

        field.String("email"),

    }

}


.....



func (Product) Mixin() []ent.Mixin {

    return []ent.Mixin{

        TimeStamp{},

    }

}


func (Product) Fields() []ent.Field {

    return []ent.Field{

        field.Int("id"),

        field.String("name").MaxLen(70),

        field.Float("price"),

    }

}

此外,ent 還提供了內(nèi)置的時(shí)間混合,可用于將 和 字段添加到架構(gòu)中,并將其定義為 。create_timeupdate_timemixin.Time{}


有關(guān)更多詳細(xì)信息,您可以查看 Mixin


查看完整回答
反對(duì) 回復(fù) 2022-09-26
  • 1 回答
  • 0 關(guān)注
  • 87 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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