19
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【gorm】論理削除したデータを抽出する

Posted at

はじめに

gormを導入すると、delete関数を実行すれば自動で論理削除してくれたり、クエリを実行する際に自動的に論理削除データを除外してくれたり色々と便利だったのですが、論理削除を復活させるために一旦論理削除済みのデータを抽出する必要が出てきたので調査しましたのでメモ。

やり方

ソースを眺めていたのですが、そもそも公式に書いてあることに気づきました。
http://doc.gorm.io/crud.html#delete
※Soft Deleteの項を参照

通常通り、以下のようにWhere関数で条件を指定すると、論理削除されたデータを除く条件が追加されたSQLが実行されます。

db.Where("age = 20").Find(&user)
実行するSQL
SELECT * FROM users WHERE age = 20 AND deleted_at IS NULL;

以下のようにUnscoped()で取得したdbに対して条件を指定すれば、SQLに条件が追加されません。

db.Unscoped().Where("age = 20").Find(&users)
実行するSQL
SELECT * FROM users WHERE age = 20;

終わりに

github.com/jinzhu/gorm/main.goを覗いてみると、関数によってはコメントにリファレンスのURLが載っていたりするので、次困ったことがあったらmain.goを覗いてみようと思います。

19
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?