📝
Prismaでこれやりたい集
この記事の目的
React(Typescript)とNest.jsを使って簡易的な習慣アプリを作成中で、DB操作にPrismaを使用しており、今後のためのメモとして記載しています。
フロントエンド(React)
バックエンド(Nest.js/Prisma)
定義したモデルスキーマを元にテーブルを生成したい
npx prisma migrate dev --name init
モデルスキーマの変更を反映したテーブルを生成をしたい
npx prisma migrate dev --name <変更内容の名前>
定義したモデルスキーマをDBにマイグレートしなおしたい
npx prisma migrate reset
親を削除したときに子供と孫まで削除したい(Cascading deletes)
@relation
で定義時に、onDelete: Cascade
を指定することで親が削除された際に子も削除されます。
削除せずにレコードを残したい場合にはonDelete: SetNull
を指定することでレコードを残すことも出来ます。
model Habit {
habitId Int @default(autoincrement()) @id
title String
habitStatuses HabitStatus[]
createdAt DateTime @default(now())
updatedAt DateTime @default(now())
}
model HabitStatus {
habit_status_id Int @default(autoincrement()) @id
habit Habit @relation(fields: [habitId], references: [habitId], onDelete: Cascade)
habitId Int
isCompleted Boolean
targetedDate String
}
参考文献
特定の期間を条件検索(where)する方法
SQL分のbetween
に相当するもので、特定の期間を条件指定する際、
lt (less than) gt (greater than) など where 句で使えるものがあります。
これは date 型にも適用できます。
const data = await client.post.findMany({
where: {
createdAt: {
gte: new Date("2020-01-01"),
lt: new Date("2020-01-02")
},
},
});
参考記事
WHERE
クエリを作りたい
Prismaで、リレーション先のデータに対する参考記事
PrismaでDatetime型をwhereする
以下参考記事
Discussion