orm_test
This commit is contained in:
parent
9235703e7a
commit
6620231d48
1
test/relation_test.go
Normal file
1
test/relation_test.go
Normal file
|
@ -0,0 +1 @@
|
||||||
|
package test
|
85
test/typedef_test.go
Normal file
85
test/typedef_test.go
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
/*
|
||||||
|
사용 가능한 annotations
|
||||||
|
|
||||||
|
Primary Key
|
||||||
|
`gorm:"primary_key"`
|
||||||
|
|
||||||
|
Auto Increase
|
||||||
|
`gorm:"AUTO_INCREMENT"`
|
||||||
|
|
||||||
|
Index
|
||||||
|
`gorm:"index"`
|
||||||
|
|
||||||
|
Unique Index
|
||||||
|
`gorm:"unique_index"`
|
||||||
|
|
||||||
|
Set SQL type
|
||||||
|
`gorm:"type:varchar(100)’
|
||||||
|
|
||||||
|
Not null and Unique
|
||||||
|
`gorm:"not null;unique"`
|
||||||
|
|
||||||
|
Set Column name
|
||||||
|
`gorm:"column:loafler_id"`
|
||||||
|
|
||||||
|
Many to Many
|
||||||
|
`gorm:"many2many:user_languages;"` // 'user_languages' is join table
|
||||||
|
|
||||||
|
Ignore
|
||||||
|
`gorm:"-"`
|
||||||
|
*/
|
||||||
|
|
||||||
|
package test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"database/sql"
|
||||||
|
"github.com/jinzhu/gorm"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type User struct {
|
||||||
|
gorm.Model
|
||||||
|
|
||||||
|
Birthday time.Time
|
||||||
|
Age int
|
||||||
|
Name string `gorm:"size:255"` // Default size for string is 255, reset it with this tag
|
||||||
|
Num int `gorm:"AUTO_INCREMENT"`
|
||||||
|
|
||||||
|
CreditCard CreditCard // One-To-One relationship (has one - use CreditCard's UserID as foreign key)
|
||||||
|
Emails []Email // One-To-Many relationship (has many - use Email's UserID as foreign key)
|
||||||
|
|
||||||
|
BillingAddress Address // One-To-One relationship (belongs to - use BillingAddressID as foreign key)
|
||||||
|
BillingAddressID sql.NullInt64
|
||||||
|
|
||||||
|
ShippingAddress Address // One-To-One relationship (belongs to - use ShippingAddressID as foreign key)
|
||||||
|
ShippingAddressID int
|
||||||
|
|
||||||
|
IgnoreMe int `gorm:"-"` // Ignore this field
|
||||||
|
Languages []Language `gorm:"many2many:user_languages;"` // Many-To-Many relationship, 'user_languages' is join table
|
||||||
|
}
|
||||||
|
|
||||||
|
type Email struct {
|
||||||
|
ID int
|
||||||
|
UserID int `gorm:"index"` // Foreign key (belongs to), tag `index` will create index for this column
|
||||||
|
Email string `gorm:"type:varchar(100);unique_index"` // `type` set sql type, `unique_index` will create unique index for this column
|
||||||
|
Subscribed bool
|
||||||
|
}
|
||||||
|
|
||||||
|
type Address struct {
|
||||||
|
ID int
|
||||||
|
Address1 string `gorm:"not null;unique"` // Set field as not nullable and unique
|
||||||
|
Address2 string `gorm:"type:varchar(100);unique"`
|
||||||
|
Post sql.NullString `gorm:"not null"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Language struct {
|
||||||
|
ID int
|
||||||
|
Name string `gorm:"index:idx_name_code"` // Create index with name, and will create combined index if find other fields defined same name
|
||||||
|
Code string `gorm:"index:idx_name_code"` // `unique_index` also works
|
||||||
|
}
|
||||||
|
|
||||||
|
type CreditCard struct {
|
||||||
|
gorm.Model
|
||||||
|
UserID uint
|
||||||
|
Number string
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user