Maison  >  Article  >  développement back-end  >  Comment récupérer le dernier ID d'insertion dans GORM 2.0 ?

Comment récupérer le dernier ID d'insertion dans GORM 2.0 ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-26 13:24:28359parcourir

How to Retrieve the Last Insert ID in GORM 2.0?

Comment récupérer l'ID du dernier insert dans GORM 2.0

Dans les versions antérieures de GORM, la méthode Begin() renvoyait un objet sql.Tx qui activé la récupération du dernier ID d'insertion à l'aide de la méthode LastInsertId(). Cependant, dans GORM 2.0, cette méthode a été supprimée.

Récupération du dernier ID d'insertion dans GORM 2.0

Il existe deux méthodes pour obtenir le dernier ID d'insertion dans GORM 2.0. :

1. Utilisation de db.Last() :

Après avoir inséré une ligne dans la base de données, vous pouvez appeler la fonction db.Last(). Cela remplira le modèle avec l'ID nouvellement attribué :

<code class="go">    type User struct {
        gorm.Model
        Name string
    }

    user1 := User{Name: "User One"}

    _ = db.Transaction(func(tx *gorm.DB) error {
        tx.Create(&user1)
        return nil
    })

    db.Last(&user1)

    fmt.Printf("User one ID: %d\n", user1.ID)</code>

2. Accès direct à l'ID du modèle :

Vous pouvez également accéder directement au champ ID du modèle après l'insertion. L'ID aura été automatiquement renseigné lors de l'opération d'insertion :

<code class="go">    type User struct {
        gorm.Model
        Name string
    }

    user1 := User{Name: "User One"}

    _ = db.Transaction(func(tx *gorm.DB) error {
        tx.Create(&user1)
        return nil
    })

    fmt.Printf("User one ID: %d\n", user1.ID)</code>

Recommandation :

Il est recommandé d'utiliser la deuxième approche (accéder directement à l'ID du modèle) car cela élimine le besoin d’un appel supplémentaire à db.Last(). Cela peut améliorer les performances, en particulier pour les opérations d'insertion à grand volume.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn