list/pluck

This commit is contained in:
飞哥(fizzday)
2024-03-18 12:39:55 +08:00
parent e29c2818cf
commit 9892eba2e4
2 changed files with 23 additions and 7 deletions

View File

@@ -340,8 +340,8 @@ func (db *Database) Count() (res int64, err error) {
return
}
// Pluck 从查询结果集中获取指定列的值列表。
func (db *Database) Pluck(column string) (res []any, err error) {
// List 获取指定列的值列表。
func (db *Database) List(column string) (res []any, err error) {
ress, err := db.Get(column)
if err != nil {
return res, err
@@ -352,16 +352,14 @@ func (db *Database) Pluck(column string) (res []any, err error) {
return
}
// List 获取指定列的键值对列表。
func (db *Database) List(column string, keyColumn string) (res []map[any]any, err error) {
// Pluck 从查询结果集中获取键值对列表。
func (db *Database) Pluck(column string, keyColumn string) (res map[any]any, err error) {
ress, err := db.Get(column, keyColumn)
if err != nil {
return res, err
}
for _, v := range ress {
res = append(res, map[any]any{
v[keyColumn]: v[column],
})
res[v[keyColumn]] = v[column]
}
return
}

View File

@@ -317,6 +317,24 @@ xxx.Where("id",">", 1).Where(func(wh gorose.IWhere) {
})
```
## Pluck
返回两列数据到一个map中,第一列为value,第二列为key
```go
// select id,name from users
db().Table("users").Pluck("name", "id")
// 返回 map[<id>]<name>
// 得到 map[int64]string{1: "张三", 2: "李四"}
```
## List
返回一列数据到一个数组中
```go
// select id,name from users
db().Table("users").List("id")
// 返回 []<id>
// 得到 []int64{1,2,3}
```
## To 查询结果绑定到对象
使用结构体字段作为 select 字段
使用结构体字段值作为 where 条件