Home >Backend Development >Golang >GO - Gin/Gorm/Postgresql - Create foreign key with 'has a' association

GO - Gin/Gorm/Postgresql - Create foreign key with 'has a' association

王林
王林forward
2024-02-09 20:18:091087browse

GO - Gin/Gorm/Postgresql - 创建具有“有一个”关联的外键

php Xiaobian Strawberry introduces to you the method of using Gin, Gorm and PostgreSQL to create a foreign key with a "have" association in the GO language. During the development process, we often encounter situations where we need to establish relationships between tables. Sometimes, we need to establish a "one" association between a table and another table, that is, a record in one table corresponds to a record in another table. This association relationship can be realized through foreign keys. In the GO language, we can use the Gin framework for routing processing. Gorm is an ORM tool to interact with the database, and PostgreSQL is a powerful relational database. Below you will learn more about how to use these tools to create a foreign key with a "has a" association.

Question content

I have read the documentation (https://gorm.io/docs/has_one.html) and tested as suggested, but cannot create the association. My table looks like this (name is in Italian)

models/tables.go

type teatroy struct {
    gorm.model
    nome  string
    posti int
}

type spettacoloxy struct {
    gorm.model
    nome   string
    teatro teatroy `gorm:"foreignkey:id"`
}

I mainly use classic automatic migration

initializers.db.automigrate(&models.teatroy{}, &models.spettacoloxy{})

The error I get is as follows

"2023/04/02 16:12:24 E:/Work/Mota/cdbp4/server.go:13 ERROR: relation
"spettacolo_xies" does not exist (SQLSTATE 42P01) [33.459ms] [rows:0]
ALTER TABLE "teatro_ies" ADD CONSTRAINT "fk_spettacolo_xies_teatro"
FOREIGN KEY ("id") REFERENCES "spettacolo_xies"("id")"

After creating "teatroy", when I create "spettacoloxy", the "teatro" field must be associated with one and only one "teatroy"

Thank you in advance for your help

Workaround

Change the model migration code to:

initializers.DB.AutoMigrate(&models.SpettacoloXY{}, &models.TeatroY{})

will eliminate the error and create two tables in the database.

The above is the detailed content of GO - Gin/Gorm/Postgresql - Create foreign key with 'has a' association. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:stackoverflow.com. If there is any infringement, please contact admin@php.cn delete