[Prisma] チートシート


概要

Prismaを使ったプロジェクトを半年くらい担当していたが、そのプロジェクト離れることになったのでまた使う時のためのメモ

公式ドキュメント

prisma-client
Prisma Client API reference

CRUD

メソッド アクション メモ
create 作成
createMany 一括作成 bulk insert
findUnique 取得 一意の識別子またはIDを指定する必要がある
findFirst 取得 条件に一致する最初のレコードを取得
findMany 複数件取得 条件に一致する全てのレコードを取得
update 更新 1.条件に一致するレコードを更新
2.一意の識別子またはIDを指定する必要がある
updateMany 複数件更新 条件に一致する全てのレコードを更新
upsert 作成・更新 条件に一致するレコードが存在していれば更新、していなければ作成する
delete 削除 条件に一致するレコードを削除する
deleteMany 複数件削除 条件に一致する全てのレコードを削除する
example
// ageが20のuserを取得
prisma.user.findMany({
  where: {
    age: 20,
  },
})

// idが22のuser名を'taro'に変更
prisma.user.update({
  where: {
    id: 22,
  },
  data: {
    name: 'taro'
  }
})

query options

名前 内容 ノート
select レコードのフィールドを指定
include レコードに含めるリレーションの先を指定
where 任意のプロパティでフィルタリング
orderBy レコードのリストを並べ替える
skip 任意の数レコードをスキップする
take 指定したレコード数を取得する
cursor レコードの取得位置を指定 IDまたは別の一意の値を指定します

Filter conditions and operators

演算子とそれぞれの条件

演算子 条件 ノート
equals 値が等しいか
not 値が等しくないか
in リストに存在するか
notIn リストに存在しないか nullのフィールドのものは所得できない
lt n未満 数値や日付など
lte n以下 数値や日付など
gt nより大きい 数値や日付など
gte n以上 数値や日付など
contains 含んでいるか
startsWith xから始まるか 前方一致
endsWith xで終わるか 後方一致
AND 複数の条件に一致するか リストで指定する
OR 1つ以上の条件に一致するか リストで指定する 
NOT 複数の条件に一致しないか リストで指定する

Relation filters

演算子 条件 メモ
some いくつかのフィルタ条件に一致するか
every 全てのフィルタ条件に一致するか
none 全てのフィルタ条件に一致しないか
is フィルタ条件に一致するか
isNot フィルタ条件に一致しないか
example
// ageが20以上のuserを取得
prisma.user.findMany({
  where: {
    age: {
      gte: 20
    },
  },
})

// idが22のuser名を'taro'に変更
prisma.user.update({
  where: {
    id: 22,
  },
  data: {
    name: 'taro'
  }
})

// jobがTeacherかEngineerのuserを取得
prisma.user.findMany({
  where: {
    job: {
      some: {
        in: ['Teacher', 'Engineer']
      }
    },
  }
})

感想

Prismaはプレビューの機能があったりまだまだ発展途上のORMだと感じましたが、すごく直感的に操作ができて使いやすかったです。
他の機能も使用する機会があれば追加していきます。

最後に

アルサーガパートナーズ Advent Calendar 2021 12日目は @1zushun さんのターンです。