首页 > 其他分享 >Goravel ORM 新增模型关联,用 Golang 写关联也可以跟 Laravel 一样简单

Goravel ORM 新增模型关联,用 Golang 写关联也可以跟 Laravel 一样简单

时间:2023-03-16 22:22:29浏览次数:55  
标签:Laravel facades 关联 Golang Orm user Query Post Find

关于 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!

标签:Laravel,facades,关联,Golang,Orm,user,Query,Post,Find
From: https://www.cnblogs.com/bowen-han/p/17224425.html

相关文章

  • golang_gin_learn_todolist
    /Users/song/codelearn/golang/bubble-master/go.modmodulebubblego1.13require( github.com/0xAX/notificatorv0.0.0-20220220101646-ee9b8921e557//indirect......
  • golang goroutine
    一.goroutine基本介绍1.进程和线程说明介绍1)进行就是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位(比如迅雷进程)2)线程是进程的一个执行实例,是程序......
  • Golang-微服务-紧急升级-缓存
    1.背景API服务器timewait一直下不去尝试阿里云优化方案,修改内核配置,也不管用前端表现为:页面访问卡顿页面丢失(接口504)Postmanstart_trasfer参数忽高忽......
  • Vscode golang初始化配置
    1、下载安装GO插件2、写代码时vscode提示你需要安装go插件,点击installall进行安装如果安装失败,原因是有道墙,解决方法是,配置国内源如下:goenv-wGO111MODULE=ongoe......
  • Django应用之间模型字段关联(实现表与表解耦)
    serializers.SerializerMethodField和钩子方法结合,可以实现对ModelSerializer类的一些字段进行二次加工classtbl_group_case(models.Model):STATUS_NORMAL=0......
  • Laravel清除缓存
    清除应用程序缓存phpartisancache:clear清除路由缓存phpartisanroute:cache清楚配置缓存phpartisanconfig:cache清楚已编译的视图文件phpartisanview:cl......
  • Ubuntu 上安装 Golang 环境
    下载的相应Go版本压缩包https://golang.org/dl/##官网地址 打开终端并转到下载目录。 解压缩下载的Go二进制文件。可以使用以下命令解压缩:tar-C......
  • golang的命令行参数os.Args和flag
    os.Args是一个string的切片,用来存储所有的命令行参数1.基本使用packagemainimport("fmt""os")funcmain(){fmt.Println("命令行的参数有",len(......
  • golang_导包
    golang导包导包同一个项目下的导包文件的目录结构.├──README.md├──go.mod├──main.go├──mymath│  ├──multip.go│  └──sum.go......
  • golang 报错 pkg/mod/github.com/klauspost/[email protected]/zstd/blockdec.go:17:2
    golang报错pkg/mod/github.com/klauspost/[email protected]/zstd/blockdec.go:17:2://go:buildcommentwithout//+buildcomment这个问题一般是需要升级golang的......