Entities
1) User
2) Post
Relationship
- One user can have many groups
- One group can have many users
Steps
1) Generate user and post
go run -mod=mod entgo.io/ent/cmd/ent new User go run -mod=mod entgo.io/ent/cmd/ent new Group
2) Connect user with group
func (User) Edges() []ent.Edge { return []ent.Edge{ edge.To("groups", Group.Type), } }
3) Connect group with user
func (Group) Edges() []ent.Edge { return []ent.Edge{ edge.From("users", User.Type).Ref("groups"), } }
4) Try to create user and groups
func CreateUser(client *ent.Client, ctx context.Context) { // Create groups g1, _ := client.Group.Create().SetName("Group 1").Save(ctx) g2, _ := client.Group.Create().SetName("Group 2").Save(ctx) // Create user u, _ := client.User.Create().SetName("PP").AddGroups(g1, g2).Save(ctx) }
5) Get user with groups
func CreateUser(client *ent.Client, ctx context.Context) { ... userWithGroups, _ := client.User.Query().WithGroups().Where(user.NameEQ("PP")).First(ctx) log.Println("user with groups", userWithGroups.Edges.Groups) }
Top comments (0)