突变
原文:https://gobuffalo.io/documentation/database/mutations/
Mutations 突变
In this chapter, you’ll learn how to create, update and delete objects from you database using Pop.
在本章中,您将学习如何使用 Pop 创建、更新和删除数据库中的对象。
Create 创建
Without validation 无验证
1
2
3
4
5
| c, err := pop.Connect("development")
// [...]
fruit := &models.Fruit{}
// Create a fruit without running validations
err := c.Create(fruit)
|
With validation 有验证
1
2
3
4
5
| c, err := pop.Connect("development")
// [...]
fruit := &models.Fruit{}
// Run validations and create if all validations passed
vErrors, err := c.ValidateAndCreate(fruit)
|
Update 更新
Without validation 无验证
1
2
3
4
5
| c, err := pop.Connect("development")
// [...]
fruit := &models.Fruit{}
// Update a fruit without running validations
err := c.Update(fruit)
|
With validation 有验证
1
2
3
4
5
| c, err := pop.Connect("development")
// [...]
fruit := &models.Fruit{}
// Run validations and update if all validations passed
vErrors, err := c.ValidateAndUpdate(fruit)
|
Save 保存
Save checks for the ID in you model: if the ID is the zero value of the type (so for example if it’s an int and its value is 0), Save calls Create. Otherwise, it calls Update.
在模型中保存 ID 的检查:如果 ID 是该类型的零值(例如,如果它是 int 且其值为 0 ),则 Save 调用 Create 。否则,它调用 Update 。
Without validation 无验证
1
2
3
4
5
6
7
8
9
10
| c, err := pop.Connect("development")
// [...]
fruit := &models.Fruit{ID: 0}
// Create a fruit without running validations
err := c.Save(fruit)
c, err := pop.Connect("development")
// [...]
fruit := &models.Fruit{ID: 1}
// Update a fruit without running validations
err := c.Save(fruit)
|
With validation 有验证
1
2
3
4
5
6
7
8
9
10
| c, err := pop.Connect("development")
// [...]
fruit := &models.Fruit{ID: 0}
// Run validations and create if all validations passed
vErrors, err := c.ValidateAndSave(fruit)
c, err := pop.Connect("development")
// [...]
fruit := &models.Fruit{ID: 1}
// Run validations and update if all validations passed
vErrors, err := c.ValidateAndSave(fruit)
|
Delete 删除
1
2
3
4
5
| c, err := pop.Connect("development")
// [...]
fruit := &models.Fruit{ID: 1}
// Destroy the fruit
err := c.Destroy(fruit)
|
Next Steps 后续步骤