Associações "Has Many" em Go com GORM

Associações "Has Many" em Go com GORM

Associações "has many" são um tipo de relação entre duas tabelas em um banco de dados, onde uma linha em uma tabela pode estar associada a várias linhas em outra tabela. Isso é extremamente útil para modelar relacionamentos um-para-muitos em nossas aplicações.

Como Usar "Has Many" com GORM:

Com o GORM, podemos definir associações "has many" entre duas estruturas de dados usando tags específicas. Vamos ver um exemplo prático para entender melhor.

Exemplo Prático:

Digamos que temos duas entidades: User (Usuário) e Post (Postagem). Cada usuário pode ter várias postagens associadas. Vamos criar esses modelos e definir a associação "has many" entre eles.

    
      type User struct {
          gorm.Model
          Name  string
          Posts []Post `gorm:"foreignKey:UserID"`
      }

      type Post struct {
          gorm.Model
          UserID uint
          Title  string
          Body   string
      }
    
  

Aqui, no modelo User, estamos definindo uma associação "has many" com Post. A tag gorm:"foreignKey:UserID" especifica que a chave estrangeira para o usuário está em UserID.

Criando e Recuperando Dados::

Vamos ver como podemos criar e recuperar dados associados usando o GORM:

    
    // Criando um novo usuário com várias postagens associadas
    user := User{
              Name: "Alice",
              Posts: []Post{
                            {
                              Title: "Primeira Postagem", 
                              Body: "Conteúdo da primeira postagem"
                            }, 
                            {
                              Title: "Segunda Postagem", 
                              Body: "Conteúdo da segunda postagem"
                            }
                          }
                        }
    
    db.Create(&user)

    // Recuperando um usuário e suas postagens associadas
    var alice User
    db.Preload("Posts").First(&alice, 1)
    
  

Usar associações em GORM para criar relações entre modelos de dados em nossas aplicações nos permite estruturar nossos dados de forma mais eficaz e criar aplicações mais poderosas e flexíveis.

Até a próxima!

Comentários

Postagens mais visitadas deste blog

O outro lado do Ruby

Entendendo Estruturas de Dados: O Que São e Por Que São Importantes?

Entendendo a Notação Big O em Go