Home > Backend Development > Golang > How to Store an Embedded Struct in a Single Table with GORM?

How to Store an Embedded Struct in a Single Table with GORM?

Barbara Streisand
Release: 2024-11-03 07:22:30
Original
413 people have browsed it

How to Store an Embedded Struct in a Single Table with GORM?

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>
Copy after login

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!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template