forked from mirror/gorm
Document Soft Delete and Unscoped in README
This commit is contained in:
parent
68d3d134e6
commit
44b64ff74f
27
README.md
27
README.md
|
@ -8,9 +8,10 @@ Yet Another ORM library for Go, aims for developer friendly
|
||||||
* Chainable API
|
* Chainable API
|
||||||
* Before/After Create/Save/Update/Delete Callbacks
|
* Before/After Create/Save/Update/Delete Callbacks
|
||||||
* Order/Select/Limit/Offset Support
|
* Order/Select/Limit/Offset Support
|
||||||
* Automatically CreatedAt, UpdatedAt
|
|
||||||
* Update, Updates Like Rails's update_attribute, update_attributes
|
* Update, Updates Like Rails's update_attribute, update_attributes
|
||||||
* Dynamically set table name when search, update, delete...
|
* Dynamically set table name when search, update, delete...
|
||||||
|
* Automatically CreatedAt, UpdatedAt
|
||||||
|
* Soft Delete
|
||||||
* Create table from struct
|
* Create table from struct
|
||||||
* Prevent SQL Injection
|
* Prevent SQL Injection
|
||||||
* Goroutines friendly
|
* Goroutines friendly
|
||||||
|
@ -171,6 +172,29 @@ db.Table("users").Where(10).Updates(map[string]interface{}{"name": "hello", "age
|
||||||
db.Table("users").Updates(map[string]interface{}{"name": "hello", "age": 18})
|
db.Table("users").Updates(map[string]interface{}{"name": "hello", "age": 18})
|
||||||
//// update users set name='hello', age=18;
|
//// update users set name='hello', age=18;
|
||||||
|
|
||||||
|
// Soft Delete
|
||||||
|
// For those struct have DeletedAt field, they will get soft delete ability automatically!
|
||||||
|
type Order struct {
|
||||||
|
Id int64
|
||||||
|
Amount int64
|
||||||
|
CreatedAt time.Time
|
||||||
|
UpdatedAt time.Time
|
||||||
|
DeletedAt time.Time
|
||||||
|
}
|
||||||
|
order := order{Id:10}
|
||||||
|
db.Delete(&order)
|
||||||
|
//// UPDATE orders SET deleted_at="2013-10-29 10:23" WHERE id = 10;
|
||||||
|
db.Where("amount = ?", 0).Delete(&Order{})
|
||||||
|
//// UPDATE orders SET deleted_at="2013-10-29 10:23" WHERE amount = 0;
|
||||||
|
db.Where("amount = 100").Find(&order)
|
||||||
|
//// order -> select * from orders where amount = 100 and (deleted_at is null and deleted_at <= '0001-01-02');
|
||||||
|
// And you are possible to query soft deleted orders with Unscoped method
|
||||||
|
db.Unscoped().Where("amount = 100").Find(&order)
|
||||||
|
//// order -> select * from orders where amount = 100;
|
||||||
|
// Of course, you could permanently delete a record with Unscoped
|
||||||
|
db.Unscoped().Delete(&order)
|
||||||
|
// DELETE from orders where id=10;
|
||||||
|
|
||||||
// Run Raw SQL
|
// Run Raw SQL
|
||||||
db.Exec("drop table users;")
|
db.Exec("drop table users;")
|
||||||
|
|
||||||
|
@ -215,7 +239,6 @@ db.Where("mail_type = ?", "TEXT").Find(&users1).Table("deleted_users").First(&us
|
||||||
```
|
```
|
||||||
|
|
||||||
## TODO
|
## TODO
|
||||||
* Soft Delete
|
|
||||||
* Query with map or struct
|
* Query with map or struct
|
||||||
* SubStruct
|
* SubStruct
|
||||||
* Index, Unique, Valiations
|
* Index, Unique, Valiations
|
||||||
|
|
Loading…
Reference in New Issue