1 回答
TA贡献1789条经验 获得超8个赞
您可以使用 MixIn,它允许您创建可重用的耳影片段。可以使用组合将架构代码注入到其他架构中,因此,您可以在另一个架构中定义时间戳值,并将其混合在需要的其他架构中,以便您的时间戳(基本实体)mixin架构将如下所示
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),
}
}
现在,当它被定义并且您需要将此时间戳架构注入到其他架构中时。为此,您所要做的就是将其注入该架构的MixIn()中,如下所示
func (User) Mixin() []ent.Mixin {
return []ent.Mixin{
TimeStamp{},
}
}
......
func (Product) Mixin() []ent.Mixin {
return []ent.Mixin{
TimeStamp{},
}
}
因此,您的最终架构将如下所示。
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 还提供了内置的时间混合,可用于将 和 字段添加到架构中,并将其定义为 。create_timeupdate_timemixin.Time{}
有关更多详细信息,您可以查看 Mixin
- 1 回答
- 0 关注
- 73 浏览
添加回答
举报