Relazioni e query avanzate con Prisma
Modelli relazioni uno-a-molti e molti-a-molti, quindi esegua query tra esse con nested writes, include, select, filtri e paginazione.
Relazioni e query avanzate con Prisma è una lezione Next.js 15 Fullstack Web Apps gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Next.js 15 Fullstack Web Apps, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Next.js 15 Fullstack Web Apps include 4 lezioni in totale.
Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.
Why Relations?
Real data is connected: a user has many posts, a post has many tags. Prisma models these relations in the schema so you can traverse them in type-safe queries.
One-to-Many in the Schema
A one-to-many relation links a parent to many children via a foreign key. Define both sides in the schema.
model User {
id Int @id @default(autoincrement())
posts Post[]
}
model Post {
id Int @id @default(autoincrement())
authorId Int
author User @relation(fields: [authorId], references: [id])
}Many-to-Many
Prisma supports implicit many-to-many with just array fields on both sides; it manages the join table for you.
model Post { id Int @id @default(autoincrement()) tags Tag[] }
model Tag { id Int @id @default(autoincrement()) posts Post[] }Including Related Data
By default queries return only the model fields. Use include to fetch related records too.
const user = await prisma.user.findUnique({
where: { id: 1 },
include: { posts: true },
});Selecting Specific Fields
Use select to fetch only the columns you need — leaner payloads and faster queries. You can nest select for relations.
const posts = await prisma.post.findMany({
select: { id: true, title: true, author: { select: { name: true } } },
});Nested Writes
Create a parent and its children in one call with a nested create. Prisma runs it in a transaction.
await prisma.user.create({
data: {
name: 'Ada',
posts: { create: [{ title: 'Hello' }, { title: 'World' }] },
},
});Filtering with where
Build rich filters with operators like contains, gt, in, and combine them with AND/OR.
const recent = await prisma.post.findMany({
where: {
published: true,
title: { contains: 'Prisma' },
},
});Filtering on Relations
You can filter a parent by a condition on its children using some, every, or none.
const authors = await prisma.user.findMany({
where: { posts: { some: { published: true } } },
});Sorting and Pagination
Order results with orderBy and page with take/skip (offset) for classic pagination.
const page = await prisma.post.findMany({
orderBy: { createdAt: 'desc' },
take: 10,
skip: 20,
});Cursor Pagination
For large or live datasets, cursor-based pagination is more stable than offset. Pass the last seen id as a cursor.
const next = await prisma.post.findMany({
take: 10,
cursor: { id: lastId },
skip: 1,
});Avoiding N+1 Queries
Fetching a list and then querying each item separately causes the N+1 problem. Prisma avoids it: use a single include to load relations in one optimized query rather than looping.
Quick Check
Test your Prisma relations knowledge.
Recap
You learned relational querying with Prisma:
- Model one-to-many and many-to-many relations in the schema
- Fetch relations with
include; trim fields withselect - Nested writes create parents and children atomically
- Filter on relations, paginate with take/skip or cursors, and avoid the N+1 problem
Domande Frequenti
La lezione «Relazioni e query avanzate con Prisma» è gratuita?
Sì — il testo completo di «Relazioni e query avanzate con Prisma» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Next.js 15 Fullstack Web Apps, passa a CoddyKit PRO. Il corso Next.js 15 Fullstack Web Apps include 4 lezioni in totale.
Cosa imparerò in «Relazioni e query avanzate con Prisma»?
Modelli relazioni uno-a-molti e molti-a-molti, quindi esegua query tra esse con nested writes, include, select, filtri e paginazione. Eserciti Next.js 15 Fullstack Web Apps con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Next.js 15 Fullstack Web Apps?
Non è richiesta alcuna esperienza precedente. Next.js 15 Fullstack Web Apps su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Relazioni e query avanzate con Prisma»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Next.js 15 Fullstack Web Apps?
Sì. Ogni lezione Next.js 15 Fullstack Web Apps include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Introduzione a Prisma ORM
- Progettazione dello schema Prisma e migrazioni
- Operazioni CRUD con Prisma Client
- Relazioni e query avanzate con Prisma