Golang Go语言中Goravel ORM 新增模型关联,用 Golang 写关联也可以跟 Laravel 简单
关于 Goravel
Goravel 是一个功能完备、具有良好扩展能力的 Web 应用程序框架。作为一个起始脚手架帮助 Golang 开发者快速构建自己的应用。框架风格与 Laravel 保持一致,让 PHPer 不用学习新的框架,也可以愉快的玩转 Golang !
ORM 模块上新「模型关联」,好用的飞起,有码有真相!
定义模型
一个用户可以发布多篇文章
type User struct {
orm.Model
Name string
Posts []*Post
}
type Post struct {
orm.Model
UserID uint
Name string
}
查找(同时预加载关联模型)
var user models.User
facades.Orm.Query().With("Post").Find(&user)
// 预加载多个关联模型(嵌套预加载)
facades.Orm.Query().With(“Post”).With(“Phone.Contact”).Find(&user)
// 为预加载添加约束
facades.Orm.Query().With(“Post”, “name = ?”, “author”).Find(&user)
facades.Orm.Query().With(“Post”, func(query orm.Query) orm.Query {
return query.Where(“name = ?”, “author”)
}).Find(&book)
延迟预加载
var user models.User
facades.Orm.Query().Find(&user)
facades.Orm.Query().Load(&user, "Post")
// 为预加载添加约束
facades.Orm.Query().Load(&book, “Post”, “name = ?”, “author”).Find(&book)
facades.Orm.Query().Load(&book, “Post”, func(query orm.Query) orm.Query {
return query.Where(“name = ?”, “author”)
}).Find(&book)
创建(同时创建关联模型)
user := User{Name: "user", Post: &Post{Name: "post"}}
// 创建 User 的同时创建所有子关联
facades.Orm.Query().Select(orm.Associations).Create(&user)
更多使用细节请 查看文档,Welcome Star, PR and Issues !
Golang Go语言中Goravel ORM 新增模型关联,用 Golang 写关联也可以跟 Laravel 简单
更多关于Golang Go语言中Goravel ORM 新增模型关联,用 Golang 写关联也可以跟 Laravel 简单的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于Golang Go语言中Goravel ORM 新增模型关联,用 Golang 写关联也可以跟 Laravel 简单的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在Golang中使用Goravel ORM来新增模型关联确实可以借鉴Laravel的简洁性,尽管两者在语言特性和生态系统上存在差异。Goravel作为一个为Go语言设计的ORM框架,致力于提供类似Laravel的流畅API,以便开发者能够更加高效地处理数据库操作。
要在Goravel中新增模型关联,你首先需要确保已经定义了相关的模型结构体,并且这些结构体已经映射到了数据库中相应的表。接下来,你可以利用Goravel提供的关联方法(如HasOne
、HasMany
、BelongsTo
、BelongsToMany
等)来定义模型之间的关系。
例如,假设你有两个模型User
和Post
,其中User
有多个Post
,你可以在User
模型中这样定义关联:
type User struct {
goravel.Model
Posts []Post `gorm:"foreignKey:UserID"`
}
func (u *User) Posts() goravel.Relation {
return u.HasMany(&Post{}, "UserID")
}
在Post
模型中,你同样需要定义反向关联(可选):
type Post struct {
goravel.Model
UserID uint
User User `gorm:"foreignKey:UserID"`
}
func (p *Post) User() goravel.Relation {
return p.BelongsTo(&User{}, "UserID")
}
通过这种方式,Goravel允许你以非常接近Laravel的方式在Go语言中处理复杂的模型关联。这不仅能够提升开发效率,还能保持代码的可读性和可维护性。