mirror of https://github.com/go-gorm/gorm.git
41 lines
1.5 KiB
Markdown
41 lines
1.5 KiB
Markdown
|
# Association Mode
|
||
|
|
||
|
Association Mode contains some helper methods to handle relationship things easily.
|
||
|
|
||
|
```go
|
||
|
// Start Association Mode
|
||
|
var user User
|
||
|
db.Model(&user).Association("Languages")
|
||
|
// `user` is the source, it need to be a valid record (contains primary key)
|
||
|
// `Languages` is source's field name for a relationship.
|
||
|
// If those conditions not matched, will return an error, check it with:
|
||
|
// db.Model(&user).Association("Languages").Error
|
||
|
|
||
|
|
||
|
// Query - Find out all related associations
|
||
|
db.Model(&user).Association("Languages").Find(&languages)
|
||
|
|
||
|
|
||
|
// Append - Append new associations for many2many, has_many, will replace current association for has_one, belongs_to
|
||
|
db.Model(&user).Association("Languages").Append([]Language{languageZH, languageEN})
|
||
|
db.Model(&user).Association("Languages").Append(Language{Name: "DE"})
|
||
|
|
||
|
|
||
|
// Delete - Remove relationship between source & passed arguments, won't delete those arguments
|
||
|
db.Model(&user).Association("Languages").Delete([]Language{languageZH, languageEN})
|
||
|
db.Model(&user).Association("Languages").Delete(languageZH, languageEN)
|
||
|
|
||
|
|
||
|
// Replace - Replace current associations with new one
|
||
|
db.Model(&user).Association("Languages").Replace([]Language{languageZH, languageEN})
|
||
|
db.Model(&user).Association("Languages").Replace(Language{Name: "DE"}, languageEN)
|
||
|
|
||
|
|
||
|
// Count - Return the count of current associations
|
||
|
db.Model(&user).Association("Languages").Count()
|
||
|
|
||
|
|
||
|
// Clear - Remove relationship between source & current associations, won't delete those associations
|
||
|
db.Model(&user).Association("Languages").Clear()
|
||
|
```
|