目錄
問題內容
解決方法
首頁 後端開發 Golang GORM 傳回結果清單或按 id 分組的結果圖

GORM 傳回結果清單或按 id 分組的結果圖

Feb 12, 2024 am 11:54 AM
聚合函數

GORM 返回结果列表或按 id 分组的结果图

php小編新一今天為大家介紹GORM的一個重要功能,也就是傳回結果清單或依id分組的結果圖。 GORM是一個強大的資料庫存取庫,它提供了豐富的查詢和操作資料庫的方法。透過使用GORM,我們可以輕鬆地從資料庫中獲取結果列表,也可以按照id進行分組並傳回結果圖。這個功能在實際開發上非常實用,能夠幫助我們更方便地處理資料庫查詢結果。接下來,讓我們一起來了解如何使用GORM來實現這個功能吧!

問題內容

本質上,使用 gormdb,我目前的程式碼看起來像這樣:

res = []*modelExample

DB.Model(&modelExample{}).
        Order("task_id ").
        Find(res)
登入後複製

我對 res 所做的事情是,我將手動循環並將具有相同 task_id 的模型附加到一個列表中,然後附加要處理的此列表。我需要這樣做的原因是因為我需要對特定列執行一些特定操作,我需要提取這些操作,而這些操作在 gorm 中無法執行。

但是,有沒有一種方法可以更有效地執行此操作,讓我像列表的列表一樣返回,然後我可以 for 循環並對每個列表元素執行操作?

解決方法

您應該可以使用以下程式碼片段來實現您的需求:

package main

import (
    "fmt"

    "gorm.io/driver/postgres"
    "gorm.io/gorm"
)

type modelExample struct {
    TaskId int
    Name   string
}

func main() {
    dsn := "host=localhost user=postgres password=postgres dbname=postgres port=5432 sslmode=disable"
    db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
    if err != nil {
        panic(err)
    }

    db.AutoMigrate(&modelExample{})

    // here you should populate the database with some data

    // querying
    res := make(map[int][]modelExample, 0)
    rows, err := db.Table("model_examples").Select("task_id, name").Rows()
    if err != nil {
        panic(err)
    }
    defer rows.Close()

    // scanning
    for rows.Next() {
        var taskId int
        var name string
        rows.Scan(&taskId, &name)
        if _, isFound := res[taskId]; !isFound {
            res[taskId] = []modelExample{{taskId, name}}
            continue
        }
        res[taskId] = append(res[taskId], modelExample{taskId, name})
    }

    // always good idea to check for errors when scanning
    if err = rows.Err(); err != nil {
        panic(err)
    }

    for _, v := range res {
        fmt.Println(v)
    }
}
登入後複製

完成初始設定後,讓我們仔細看看查詢部分。
首先,您將從表中取得所有記錄。您取得的記錄儲存在 rows 變數中。
for 迴圈中,您掃描所有記錄。每筆記錄都會新增為新的地圖條目或附加到現有條目(如果 taskid 已存在於地圖中)。
這是根據特定列建立不同清單的最簡單方法(例如 taskid)。實際上,根據我的理解,您需要拆分記錄,而不是使用聚合函數將它們分組(例如 countsum 等)。
我添加的其他程式碼只是為了清楚起見而添加的。
如果這解決了您的問題或您需要其他東西,請告訴我,謝謝!

以上是GORM 傳回結果清單或按 id 分組的結果圖的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

oracle中sum和count的差別 oracle中sum和count的差別 May 02, 2024 pm 11:09 PM

Oracle 中的 SUM 用於計算非空數值的總和,而 COUNT 則計入所有資料類型的非空值數量,包括重複值。

mysql中分組函數怎麼寫 mysql中分組函數怎麼寫 Apr 29, 2024 am 04:30 AM

MySQL 中的分組函數用於將資料集按分組計算聚合值。常用的函數有:SUM:計算指定列中值的總和COUNT:計算指定列中非NULL 值的數量AVG:計算指定列中值的平均值MIN:計算指定列中的最小值MAX:計算指定列中的最大值

sql中group by是什麼意思 sql中group by是什麼意思 Apr 29, 2024 pm 02:48 PM

GROUP BY 是 SQL 中的聚合函數,用於根據指定列對資料分組並執行聚合操作。它允許使用者:根據特定列值對資料行進行分組。對每個組別套用聚合函數(如求和、計數、求平均值)。從龐大資料集中建立有意義的摘要,執行資料聚合和分組。

sql中聚合函數有哪些 sql中聚合函數有哪些 May 02, 2024 am 01:12 AM

SQL 中的聚合函數用於計算並傳回一組行的單一值。常見的聚合函數包括:數值聚合函數:COUNT()、SUM()、AVG()、MIN()、MAX()行集合聚合函數:GROUP_CONCAT()、FIRST()、LAST()統計聚合函數:STDDEV ()、VARIANCE()選用聚合函數:COUNT(DISTINCT)、TOP(N)

sql中的sum是如何運算的 sql中的sum是如何運算的 May 09, 2024 am 09:27 AM

SQL SUM 函數透過將一組數字相加來計算它們的總和。其運算過程包括:1. 識別輸入值;2. 循環輸入值並將其轉換為數字;3. 對每個數字進行加法,累積一個總和;4. 傳回總和結果。

oracle中count函數怎麼用 oracle中count函數怎麼用 Apr 30, 2024 am 07:39 AM

Oracle 中 COUNT 函數用於統計指定列或表達式中的非空值,語法為 COUNT(DISTINCT <column_name>) 或 COUNT(*),分別計算唯一值和所有非空值的個數。

mysql中avg的用法 mysql中avg的用法 May 01, 2024 pm 09:16 PM

MySQL 的 AVG() 函數用於計算數字值的平均值。它支援多種用法,包括:計算所有銷售產品的平均數量:SELECT AVG(quantity_sold) FROM sales;計算價格的平均值:AVG(price);計算銷售額的平均值:AVG(quantity_sold * price)。 AVG() 函數忽略 NULL 值,使用 IFNULL() 可計算非空值的平均值。

sql中sum函數怎麼用 sql中sum函數怎麼用 May 02, 2024 am 12:01 AM

SQL中的SUM()函數用來計算數字列的總和。它可以根據指定列、篩選條件、別名、分組和聚合多個列來計算總和,但僅處理數字值,忽略NULL值。

See all articles