0
0

【Golang】gormでレコードを1件取得する際の関数及びエラーハンドリングについて

Posted at

gormの公式に記載があるが、レコードを1件取得する関数及びエラーハンドリングについて備忘録として残す。

用意されている関数

  • First()
  • Last()
  • Take()

First()関数について

db.First(&user)
// SELECT * FROM users ORDER BY id LIMIT 1;

条件に合致するレコードを「id」で昇順ソートし、ソートされた最初の1件を取得する。

Last()関数について

db.Last(&user)
// SELECT * FROM users ORDER BY id DESC LIMIT 1;

条件に合致するレコードを「id」で降順ソートし、ソートされた最初の1件を取得する

Take()関数について

db.Take(&user)
// SELECT * FROM users LIMIT 1;

順序指定なしで1件のレコードを取得する

レコードが見つからなかった場合

First()、Take()、Last()関数で取得するレコードがなかった場合、ErrRecordNotFoundを返却する
エラーハンドリングの例

if err != nil {
    if err == gorm.ErrRecordNotFound {
        fmt.Println("レコードが見つかりません")
    }

    fmt.Println("エラーが発生しました。")
}

まとめ

First()、Last()ではErrRecordNotFoundが発生するが、Find()などのメソッドではレコードがなくてもエラーが発生しないため、違いを把握した上でしっかりとエラーハンドリングできるようにしたい。

0
0
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
0
0