How to Embed a Struct with GORM
In GORM, embedding a struct allows you to model data structures that contain another struct within them. This is useful for nesting complex data or encapsulating substructures within the primary type.
To embed a struct, declare your primary struct and embed the nested struct using the * operator. However, GORM typically handles embedded structs by creating a separate table for each nested structure.
If you want to store the embedded struct as another field within the primary table, you can use the gorm:"column: tag. This tag specifies the name of the column where the embedded struct's data will be stored.
Consider the following example:
<code class="go">type A struct { Point GeoPoint `gorm:"column:point"` } type GeoPoint struct { Lat float64 Lon float64 }</code>
Here, the Point field is an embedded GeoPoint struct, and the gorm:"column:point" tag specifies that the GeoPoint data will be stored in the point column of the A table. This allows you to access and manipulate the embedded struct's fields (e.g., point.Lat) as if they were direct fields of the primary struct.
This approach provides the flexibility to store embedded structures in a single table without creating additional database tables.
The above is the detailed content of How to Store an Embedded Struct in a Single Table with GORM?. For more information, please follow other related articles on the PHP Chinese website!