Database Relationships with GORM: Creating Foreign Keys
In the realm of relational databases, foreign keys serve as crucial links between related tables. This article aims to guide you on how to establish a foreign key relationship in your Golang application using GORM, a popular ORM (Object-Relational Mapping) library.
Understanding the Problem
You have defined two models, User and UserInfo, and wish to establish a foreign key relationship between their UID and ID fields. The challenge lies in ensuring that the UID field in the UserInfo model correctly references the id field in the User model.
Solution
To resolve this issue, you need to configure a foreign key constraint in your database schema after defining your models. This can be achieved using the following steps:
1. Add Foreign Key During Migration
After creating the models, use GORM's AddForeignKey method to specify the foreign key relationship in your database migration. Add the following line to your migration code:
db.Model(&models.UserInfo{}).AddForeignKey("u_id", "t_user(id)", "RESTRICT", "RESTRICT")
This line establishes a foreign key constraint on the UID column in the t_user_info table, referencing the id column in the t_user table. It also sets the behavior of the foreign key to "RESTRICT", which will prevent the insertion or deletion of data that would violate the relationship.
2. Set Association Foreign Key
In your User model, you have annotated the User field in the UserInfo model with a foreign key tag:
User User `gorm:"foreignkey:u_id;association_foreignkey:id"`
This tag informs GORM that the User field should be used as the foreign key, and that it is associated with the id field in the User model.
3. Update Database
Run the database migration to apply the foreign key constraint to your schema.
Note:
Starting with GORM version 2.0, it is no longer necessary to explicitly set foreign key constraints in the model annotations. However, for earlier versions, the solution outlined above still applies.
By following these steps, you have established a proper foreign key relationship between your User and UserInfo models, ensuring that the UID field in the UserInfo model accurately references the data in the User table.
The above is the detailed content of How to Create Foreign Key Relationships in Golang using GORM?. For more information, please follow other related articles on the PHP Chinese website!