prisma-client-api-relations

작성자: prisma

관계 쿼리. 이 Prisma 기능을 사용할 때 참조하세요.

npx skills add https://github.com/prisma/cursor-plugin --skill prisma-client-api-relations

Relation Queries

Query and modify related records.

Include Relations

Load related records:

const user = await prisma.user.findUnique({
  where: { id: 1 },
  include: {
    posts: true,
    profile: true
  }
})

Filtered include

const user = await prisma.user.findUnique({
  where: { id: 1 },
  include: {
    posts: {
      where: { published: true },
      orderBy: { createdAt: 'desc' },
      take: 5,
      select: { id: true, title: true }
    }
  }
})

Nested include

const user = await prisma.user.findUnique({
  where: { id: 1 },
  include: {
    posts: {
      include: {
        comments: {
          include: { author: true }
        }
      }
    }
  }
})

Select Relations

const user = await prisma.user.findUnique({
  where: { id: 1 },
  select: {
    name: true,
    posts: {
      select: { title: true }
    }
  }
})

Nested Writes

Create with relations

const user = await prisma.user.create({
  data: {
    email: 'alice@prisma.io',
    posts: {
      create: [
        { title: 'Post 1' },
        { title: 'Post 2' }
      ]
    },
    profile: {
      create: { bio: 'Hello!' }
    }
  }
})

Create or connect

const post = await prisma.post.create({
  data: {
    title: 'New Post',
    author: {
      connectOrCreate: {
        where: { email: 'alice@prisma.io' },
        create: { email: 'alice@prisma.io', name: 'Alice' }
      }
    }
  }
})

Connect existing

const post = await prisma.post.create({
  data: {
    title: 'New Post',
    author: {
      connect: { id: 1 }
    }
  }
})

// Shorthand for foreign key
const post = await prisma.post.create({
  data: {
    title: 'New Post',
    authorId: 1
  }
})

Update Relations

Update related records

const user = await prisma.user.update({
  where: { id: 1 },
  data: {
    posts: {
      update: {
        where: { id: 1 },
        data: { title: 'Updated Title' }
      }
    }
  }
})

Update many related

const user = await prisma.user.update({
  where: { id: 1 },
  data: {
    posts: {
      updateMany: {
        where: { published: false },
        data: { published: true }
      }
    }
  }
})

Upsert related

const user = await prisma.user.update({
  where: { id: 1 },
  data: {
    profile: {
      upsert: {
        create: { bio: 'New bio' },
        update: { bio: 'Updated bio' }
      }
    }
  }
})

Disconnect

// 1-to-1 optional
const user = await prisma.user.update({
  where: { id: 1 },
  data: {
    profile: { disconnect: true }
  }
})

// Many-to-many
const post = await prisma.post.update({
  where: { id: 1 },
  data: {
    tags: {
      disconnect: [{ id: 1 }, { id: 2 }]
    }
  }
})

Delete related

const user = await prisma.user.update({
  where: { id: 1 },
  data: {
    posts: {
      delete: { id: 1 }
    }
  }
})

// Delete many
const user = await prisma.user.update({
  where: { id: 1 },
  data: {
    posts: {
      deleteMany: { published: false }
    }
  }
})

Set (replace all)

// Replace all related records
const post = await prisma.post.update({
  where: { id: 1 },
  data: {
    tags: {
      set: [{ id: 1 }, { id: 2 }]
    }
  }
})

Relation Filters

some

At least one matches:

const users = await prisma.user.findMany({
  where: {
    posts: { some: { published: true } }
  }
})

every

All match:

const users = await prisma.user.findMany({
  where: {
    posts: { every: { published: true } }
  }
})

none

None match:

const users = await prisma.user.findMany({
  where: {
    posts: { none: { published: true } }
  }
})

is / isNot (1-to-1)

const users = await prisma.user.findMany({
  where: {
    profile: { is: { country: 'USA' } }
  }
})

Count Relations

const users = await prisma.user.findMany({
  select: {
    name: true,
    _count: {
      select: { posts: true, followers: true }
    }
  }
})
// { name: 'Alice', _count: { posts: 5, followers: 100 } }

Filter counted relations

const users = await prisma.user.findMany({
  select: {
    name: true,
    _count: {
      select: {
        posts: { where: { published: true } }
      }
    }
  }
})

prisma의 다른 스킬

prisma-cli-migrate-reset
prisma
prisma 마이그레이션 리셋
official
prisma-cli-validate
prisma
prisma 검증. 이 Prisma 기능을 사용할 때 참조하세요.
official
prisma-next-extension-upgrade
prisma
Upgrade Prisma Next in your extension. Bumps every `@prisma-next/*` dependency to the requested target (or npm `latest`), runs the per-transition upgrade…
official
adr-review
prisma
하나 이상의 ADR을 새로운 시각으로(사전 맥락이 없는 팀원으로서) 검토하고, 서사 및 구조적 문제를 식별한 후 재작성합니다. 다음과 같은 경우에 사용하세요…
official
prisma-next-upgrade
prisma
Upgrade Prisma Next in your app. Bumps every `@prisma-next/*` dependency from the version pinned in the lockfile to the requested target (or npm `latest`),…
official
prisma-cli
prisma
Prisma CLI 명령어, 옵션, 워크플로우에 대한 완전한 참조로, 설정, 마이그레이션, 데이터베이스 작업 전반을 다룹니다. 우선순위별로 정리된 20개 이상의 명령어를 포함합니다: 설정(init), 생성(generate), 개발(dev), 데이터베이스 작업(db pull/push/seed/execute), 마이그레이션(migrate dev/deploy/reset/status/diff/resolve). Prisma 7.x 변경 사항을 포함합니다: 새로운 prisma.config.ts 설정 파일, 제거된 플래그(--skip-generate, --skip-seed, --schema, --url), 명시적...
official
prisma-client-api
prisma
Prisma Client API 전체 참조: 모델 쿼리, CRUD 작업, 필터링, 관계 및 트랜잭션. findUnique, findMany, create, update, delete, upsert 및 반환 변형이 있는 대량 작업을 포함한 17가지 모델 쿼리 메서드를 다룹니다. select, include, omit, orderBy, take, skip, cursor 및 distinct를 포함한 결과 형태를 지정하는 쿼리 옵션을 제공합니다. equals, in, contains, startsWith, lt, gt와 같은 스칼라 및 논리 필터 연산자와 some,...을 포함한 관계 필터를 포함합니다.
official
prisma-compute
prisma
Prisma Compute deployment and hosting guide. Use whenever the user mentions Prisma Compute, `prisma.compute.ts`, `defineComputeConfig`, deploying or hosting a Prisma app, `@prisma/cli app deploy`, `compute:deploy`, `create-prisma --deploy`, `PRISMA_SERVICE_TOKEN`, `auth workspace`, Compute apps/deployments/build logs/domains, `@prisma/cli agent install`, localhost vs `0.0.0.0`, deploy port binding, or framework deploy readiness for Hono, Elysia, Next.js, TanStack Start, Astro, Nuxt, Svelte,...
developmentdevopsofficial