以下是一个简单的使用示例:
package main
import (
"fmt"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/database/gdb"
)
// 定义模型结构体
type User struct {
Id int `json:"id"`
Name string `json:"name"`
Age int `json:"age"`
BookList []Book `json:"book_list"`
}
type Book struct {
Id int `json:"id"`
Name string `json:"name"`
}
func main() {
// 创建数据库连接
db := g.DB()
// 查询多表关联数据
result, err := db.Table("user u").
LeftJoin("book b", "u.id=b.user_id").
Fields("u.id, u.name, u.age, b.id as book_id, b.name as book_name").
ScanList(&User{})
if err != nil {
fmt.Println("Query failed:", err)
return
}
// 打印查询结果
users := result.List()
for _, user := range users {
fmt.Printf("User: %+v\n", user.(*User))
}
}
在上述示例中,定义了两个模型结构体 User 和 Book,其中 User 结构体包含了一个切片字段 BookList,用于存储关联的 Book 数据。
main 函数中,使用 g.DB() 创建了数据库连接,并进行了一次左连接查询,将查询结果通过 ScanList 方法转换为 User 结构体的切片。
注意事项:
- 查询语句中使用了 Fields 方法明确指定了需要查询的字段。
- 使用 LeftJoin 方法进行左连接操作。
- ScanList 方法的参数是一个指针类型,用于接收查询结果。
上述示例是一个简单的多表关联查询的示例,实际应用中,你可能需要根据具体的业务需求调整查询条件、字段等。同时,GoFrame 提供了更多强大的 ORM 功能,例如事务处理、模型缓存等,可以根据实际需要深入学习和使用。
转载请注明出处:http://www.zyzy.cn/article/detail/7645/GoFrame