在 GoFrame ORM 中,使用 Where、WhereOr 和 WhereNot 方法可以方便地构建不同的查询条件。这些方法可以用于链式操作,灵活地指定查询的条件。

Where 方法

Where 方法用于添加查询条件,可以通过多次调用 Where 方法来连接多个条件,这些条件之间默认为 AND 关系。
package main

import (
"fmt"
"github.com/gogf/gf/database/gdb"
"your_project/model"
)

func main() {
// 创建数据库连接
db := gdb.New()

// 链式操作条件查询
result, err := db.Model(&model.User{}).
Fields("id, name, age").
Where("age > ?", 18).
Where("name LIKE ?", "%John%").
OrderBy("age DESC").
Limit(10).
All()

if err != nil {
fmt.Println("查询失败:", err)
return
}

// 处理查询结果
fmt.Println(result)
}

在上述代码中,我们使用了两次 Where 方法,分别添加了年龄大于18和名字包含"John"的查询条件。

WhereOr 方法

WhereOr 方法用于添加 OR 关系的查询条件,可以通过多次调用 WhereOr 方法来连接多个 OR 条件。
package main

import (
"fmt"
"github.com/gogf/gf/database/gdb"
"your_project/model"
)

func main() {
// 创建数据库连接
db := gdb.New()

// 链式操作条件查询(使用 WhereOr)
result, err := db.Model(&model.User{}).
Fields("id, name, age").
WhereOr("age > ?", 18).
WhereOr("name LIKE ?", "%John%").
OrderBy("age DESC").
Limit(10).
All()

if err != nil {
fmt.Println("查询失败:", err)
return
}

// 处理查询结果
fmt.Println(result)
}

在上述代码中,我们使用了 WhereOr 方法,添加了一个 OR 关系的查询条件,即查询年龄大于18或名字包含"John"的用户。

WhereNot 方法

WhereNot 方法用于添加 NOT 关系的查询条件,即排除满足条件的记录。
package main

import (
"fmt"
"github.com/gogf/gf/database/gdb"
"your_project/model"
)

func main() {
// 创建数据库连接
db := gdb.New()

// 链式操作条件查询(使用 WhereNot)
result, err := db.Model(&model.User{}).
Fields("id, name, age").
WhereNot("age > ?", 18).
OrderBy("age DESC").
Limit(10).
All()

if err != nil {
fmt.Println("查询失败:", err)
return
}

// 处理查询结果
fmt.Println(result)
}

在上述代码中,我们使用了 WhereNot 方法,添加了一个 NOT 关系的查询条件,即排除年龄大于18的用户。

这些方法可以根据需要组合使用,构建出复杂的查询条件。通过链式操作,你能够更清晰地表达出查询的逻辑关系。


转载请注明出处:http://www.zyzy.cn/article/detail/7636/GoFrame