0Pricing
Next.js 15 Fullstack Web Apps · Leçon

Relations et requêtes avancées avec Prisma

Modélisez les relations un-à-plusieurs et plusieurs-à-plusieurs, puis interrogez-les avec des écritures imbriquées, include, select, le filtrage et la pagination.

Relations et requêtes avancées avec Prisma est une leçon Next.js 15 Fullstack Web Apps gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Next.js 15 Fullstack Web Apps, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Next.js 15 Fullstack Web Apps comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

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 with select
  • Nested writes create parents and children atomically
  • Filter on relations, paginate with take/skip or cursors, and avoid the N+1 problem

Questions Fréquemment Posées

La leçon « Relations et requêtes avancées avec Prisma » est-elle gratuite ?

Oui — le texte complet de « Relations et requêtes avancées avec Prisma » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Next.js 15 Fullstack Web Apps, passe à CoddyKit PRO. Le cours Next.js 15 Fullstack Web Apps comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Relations et requêtes avancées avec Prisma » ?

Modélisez les relations un-à-plusieurs et plusieurs-à-plusieurs, puis interrogez-les avec des écritures imbriquées, include, select, le filtrage et la pagination. Tu pratiques Next.js 15 Fullstack Web Apps avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Next.js 15 Fullstack Web Apps ?

Aucune expérience préalable n'est requise. Next.js 15 Fullstack Web Apps sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Relations et requêtes avancées avec Prisma » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Next.js 15 Fullstack Web Apps ?

Oui. Chaque leçon Next.js 15 Fullstack Web Apps inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Introduction à Prisma ORM
  2. Conception de schémas Prisma et migrations
  3. Opérations CRUD avec Prisma Client
  4. Relations et requêtes avancées avec Prisma
← Retour à Next.js 15 Fullstack Web Apps