mirror of
https://github.com/ent/ent.git
synced 2026-05-24 09:31:56 +03:00
ent/doc: add crud code examples to doc
Reviewed By: alexsn Differential Revision: D17110486 fbshipit-source-id: 5575b9f63769744bf2fe5f8f27f83ab6446db6e5
This commit is contained in:
committed by
Facebook Github Bot
parent
52b268c05c
commit
e85b080178
135
doc/md/crud.md
135
doc/md/crud.md
@@ -95,12 +95,137 @@ func main() {
|
||||
|
||||
## Create An Entity
|
||||
|
||||
## Update An Entity
|
||||
**Save** a user.
|
||||
|
||||
## Update Many Entities
|
||||
```go
|
||||
a8m, err := client.User. // UserClient.
|
||||
Create(). // User create builder.
|
||||
SetName("a8m"). // Set field value.
|
||||
SetNillableAge(age). // Avoid nil checks.
|
||||
AddGroups(g1, g2). // Add many edges.
|
||||
SetSpouse(nati). // Set unique edge.
|
||||
Save(ctx) // Create and return.
|
||||
```
|
||||
|
||||
## Query An Entity
|
||||
**SaveX** a user; Unlike **Save**, **SaveX** panics if an error occurs.
|
||||
|
||||
## Delete An Entity
|
||||
```go
|
||||
pedro := client.Pet. // PetClient.
|
||||
Create(). // User create builder.
|
||||
SetName("pedro"). // Set field value.
|
||||
SetOwner(a8m). // Set owner (unique edge).
|
||||
SaveX(ctx) // Create and return.
|
||||
```
|
||||
|
||||
## Delete Entities
|
||||
## Update One
|
||||
|
||||
If an entity that already returned from the database.
|
||||
|
||||
```go
|
||||
a8m, err = a8m.Update(). // User update builder.
|
||||
RemoveGroup(g2). // Remove specific edge.
|
||||
ClearCard(). // Clear unique edge.
|
||||
SetAge(30). // Set field value
|
||||
Save(ctx) // Save and return.
|
||||
```
|
||||
|
||||
|
||||
## Update By ID
|
||||
|
||||
```go
|
||||
pedro, err := client.Pet. // PetClient.
|
||||
UpdateOneID(id). // Pet update builder.
|
||||
SetName("pedro"). // Set field name.
|
||||
SetOwnerID(owner). // Set unique edge, using id.
|
||||
Save(ctx) // Save and return.
|
||||
```
|
||||
|
||||
## Update Many
|
||||
|
||||
Filter using predicates.
|
||||
|
||||
```go
|
||||
n, err := client.User. // UserClient.
|
||||
Update(). // Pet update builder.
|
||||
Where( //
|
||||
user.Or( // (age >= 30 OR name = "bar")
|
||||
user.AgeEQ(30), //
|
||||
user.Name("bar"), // AND
|
||||
), //
|
||||
user.HasFollowers(), // UserHasFollowers()
|
||||
). //
|
||||
SetName("foo"). // Set field name.
|
||||
Save(ctx) // exec and return.
|
||||
```
|
||||
|
||||
Query edge-predicates.
|
||||
|
||||
```go
|
||||
n, err := client.User. // UserClient.
|
||||
Update(). // Pet update builder.
|
||||
Where( //
|
||||
user.HasFriendsWith( // UserHasFriendsWith (
|
||||
user.Or( // age = 20
|
||||
user.Age(20), // OR
|
||||
user.Age(30), // age = 30
|
||||
) // )
|
||||
), //
|
||||
). //
|
||||
SetName("a8m"). // Set field name.
|
||||
Save(ctx) // exec and return.
|
||||
```
|
||||
|
||||
## Query The Graph
|
||||
|
||||
Get all users with followers.
|
||||
```go
|
||||
users, err := client.User. // UserClient.
|
||||
Query(). // User query builder.
|
||||
Where(user.HasFollowers()). // filter only users with followers.
|
||||
All(ctx) // query and return.
|
||||
```
|
||||
|
||||
Get all followers of a specific user; Start the traversal from a node in the graph.
|
||||
```go
|
||||
users, err := a8m.
|
||||
QueryFollowers().
|
||||
All(ctx)
|
||||
```
|
||||
|
||||
Get all pets of the followers of a user.
|
||||
```go
|
||||
users, err := a8m.
|
||||
QueryFollowers().
|
||||
QueryPets().
|
||||
All(ctx)
|
||||
```
|
||||
More advance traversals can be found in the [next section](traversals.md).
|
||||
|
||||
## Delete One
|
||||
|
||||
Delete an entity.
|
||||
|
||||
```go
|
||||
err := client.User.
|
||||
DeleteOne(a8m).
|
||||
Exec(ctx)
|
||||
```
|
||||
|
||||
Delete by id.
|
||||
|
||||
```go
|
||||
err := client.User.
|
||||
DeleteOneID(id).
|
||||
Exec(ctx)
|
||||
```
|
||||
|
||||
## Delete Many
|
||||
|
||||
Delete using predicates.
|
||||
|
||||
```go
|
||||
err := client.File.
|
||||
Delete().
|
||||
Where(file.UpdatedAtLT(date))
|
||||
Exec(ctx)
|
||||
```
|
||||
Reference in New Issue
Block a user