


GORM renvoie une liste de résultats ou un graphique de résultats regroupés par identifiant
L'éditeur PHP Xinyi vous présente aujourd'hui une fonction importante de GORM, qui consiste à renvoyer une liste de résultats ou un graphique de résultats regroupés par identifiant. GORM est une puissante bibliothèque d'accès aux bases de données qui fournit des méthodes riches pour interroger et exploiter des bases de données. En utilisant GORM, nous pouvons facilement obtenir une liste de résultats de la base de données et également les regrouper par identifiant et renvoyer un graphique des résultats. Cette fonction est très pratique dans le développement réel et peut nous aider à traiter plus facilement les résultats des requêtes de base de données. Ensuite, apprenons comment utiliser GORM pour implémenter cette fonction !
Contenu de la question
Essentiellement, en utilisant gormdb, mon code actuel ressemble à ceci :
res = []*modelExample DB.Model(&modelExample{}). Order("task_id "). Find(res)
Ce que j'ai fait avec res, c'est que je bouclerais et ajouterais manuellement les modèles avec le même task_id à une liste, puis j'ajouterais cette liste pour qu'elle soit traitée. La raison pour laquelle je dois faire cela est que je dois effectuer certaines opérations spécifiques sur des colonnes spécifiques que je dois extraire et que ces opérations ne peuvent pas être effectuées dans gorm.
Cependant, existe-t-il un moyen de faire cela plus efficacement, me permettant de revenir comme une liste de listes, puis de pouvoir effectuer une boucle et effectuer l'opération sur chaque élément de la liste ?
Solution de contournement
Vous devriez pouvoir utiliser l'extrait de code suivant pour répondre à vos besoins :
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) } }
Après avoir terminé la configuration initiale, examinons de plus près la section requête.
Tout d’abord, vous obtiendrez tous les enregistrements de la table. L'enregistrement que vous obtenez est stocké dans la variable rows
.
en for
循环中,您扫描所有记录。每条记录都将添加为新的地图条目或附加到现有条目(如果 taskid
existe déjà dans la carte).
C'est le moyen le plus simple de créer différentes listes basées sur des colonnes spécifiques (comme taskid
)。实际上,根据我的理解,您需要拆分记录,而不是使用聚合函数将它们分组(例如 count
、sum
etc.).
L'autre code que j'ai ajouté est juste pour plus de clarté.
Si cela résout votre problème ou si vous avez besoin d'autre chose, faites-le-moi savoir, merci !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

SUM dans Oracle est utilisé pour calculer la somme des valeurs non nulles, tandis que COUNT compte le nombre de valeurs non nulles de tous les types de données, y compris les valeurs en double.

La fonction de regroupement de MySQL est utilisée pour calculer des valeurs agrégées en regroupant un ensemble de données. Les fonctions couramment utilisées sont : SUM : Calcule la somme des valeurs dans la colonne spécifiée COUNT : Calcule le nombre de valeurs non NULL dans la colonne spécifiée AVG : Calcule la valeur moyenne des valeurs dans la colonne spécifiée MIN : Calculez la valeur minimale dans la colonne spécifiée. MAX : Calculez le nombre de valeurs non NULL dans la colonne spécifiée, la valeur maximale de

GROUP BY est une fonction d'agrégation dans SQL utilisée pour regrouper les données en fonction de colonnes spécifiées et effectuer des opérations d'agrégation. Il permet aux utilisateurs de : Regrouper les lignes de données en fonction de valeurs de colonne spécifiques. Appliquez une fonction d'agrégation (telle que somme, nombre, moyenne) à chaque groupe. Créez des résumés significatifs à partir de grands ensembles de données, effectuez l'agrégation et le regroupement de données.

La fonction SQL SUM calcule la somme d'un ensemble de nombres en les additionnant. Le processus opérationnel comprend : 1. L'identification de la valeur d'entrée ; 2. La boucle de la valeur d'entrée et sa conversion en nombre ; 3. L'ajout de chaque nombre pour accumuler une somme ; 4. Le renvoi du résultat de la somme ;

Les fonctions d'agrégation en SQL sont utilisées pour calculer et renvoyer une valeur unique pour un ensemble de lignes. Les fonctions d'agrégation courantes incluent : Fonctions d'agrégation numérique : COUNT(), SUM(), AVG(), MIN(), MAX() Fonctions d'agrégation d'ensembles de lignes : GROUP_CONCAT(), FIRST(), LAST() Fonctions d'agrégation statistique : STDDEV ( ), fonctions d'agrégation facultatives VARIANCE() : COUNT(DISTINCT), TOP(N)

La fonction COUNT dans Oracle est utilisée pour compter les valeurs non nulles dans une colonne ou une expression spécifiée. La syntaxe est COUNT(DISTINCT <column_name>) ou COUNT(*), qui compte le nombre de valeurs uniques et toutes non. -valeurs nulles respectivement.

La fonction AVG() de MySQL est utilisée pour calculer la moyenne des valeurs numériques. Il prend en charge diverses utilisations, notamment : Calculer la quantité moyenne de tous les produits vendus : SELECT AVG(quantity_sold) FROM sales ; Calculer le prix moyen : AVG(price) ; Calculer le volume moyen des ventes : AVG(quantity_sold * price). La fonction AVG() ignore les valeurs NULL, utilisez IFNULL() pour calculer la moyenne des valeurs non nulles.

La fonction SUM() en SQL est utilisée pour calculer la somme des colonnes numériques. Il peut calculer des sommes en fonction de colonnes spécifiées, de filtres, d'alias, de regroupement et d'agrégation de plusieurs colonnes, mais ne gère que les valeurs numériques et ignore les valeurs NULL.
