Initial commit
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
# Field Selection Guide
|
||||
|
||||
## Select vs Include
|
||||
|
||||
**select:** Choose specific fields (excludes all others)
|
||||
|
||||
```typescript
|
||||
const user = await prisma.user.findUnique({
|
||||
where: { id: 1 },
|
||||
select: {
|
||||
id: true,
|
||||
email: true
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
**include:** Add relations to default fields
|
||||
|
||||
```typescript
|
||||
const user = await prisma.user.findUnique({
|
||||
where: { id: 1 },
|
||||
include: {
|
||||
orders: true
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
**Cannot use both select and include in same query.**
|
||||
|
||||
## Nested Selection
|
||||
|
||||
```typescript
|
||||
const users = await prisma.user.findMany({
|
||||
select: {
|
||||
id: true,
|
||||
email: true,
|
||||
orders: {
|
||||
select: {
|
||||
id: true,
|
||||
total: true,
|
||||
createdAt: true
|
||||
},
|
||||
where: { status: 'completed' },
|
||||
orderBy: { createdAt: 'desc' },
|
||||
take: 5
|
||||
}
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
Only fetches recent completed orders, not all orders.
|
||||
|
||||
## Counting Relations Without Loading
|
||||
|
||||
```typescript
|
||||
const users = await prisma.user.findMany({
|
||||
select: {
|
||||
id: true,
|
||||
email: true,
|
||||
_count: {
|
||||
select: {
|
||||
orders: true,
|
||||
posts: true
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
Returns counts without loading actual relation records.
|
||||
Reference in New Issue
Block a user