#GORM ## 事象 以下のように文字列の[[主キー]]を持つテーブルのレコードに対して、`db.First`を実行すると、`HogeId = "hoge"`のレコードはないのに結果が返却される。 ```go type Hoge struct { HogeId string `gorm:"primaryKey"` Name string } id := "hoge" db.First(&hoge, id) ``` ## 原因 `db.First(&hoge, id)`の書き方は[[主キー]]が数値の場合でしか有効でないから。 ## 対策 普通に[[プレースホルダー]]を使って書く。 ```go id := "hoge" db.First(&hoge, "hoge_id = ?", id) ``` ## 参考 - [レコードの取得 \| GORM \- The fantastic ORM library for Golang, aims to be developer friendly\.](https://gorm.io/ja_JP/docs/query.html#%E3%83%97%E3%83%A9%E3%82%A4%E3%83%9E%E3%83%AA%E3%82%AD%E3%83%BC%E3%81%A7%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B)