GORMで必要カラムだけを取得したい場合

環境

  • Go1.16.6
  • GORM

やりたいこと

GORMでテーブルからSELECTする際に、全カラムではなく必要なカラムだけを取得したい。

どうやるか

公式ページの以下に書いてある通り。(Advancedのページに書いてあったので最初気づかず悩んだので自分用に整理しています)

gorm.io

具体例

type hoge struct {
    Id int64
}
var i *hoge

t.db.Gdb.Table("hoges").Where("name = ?", "aaa").Find(&i)
// ※hogesテーブルはID以外にもいろんなカラムを持っている前提

// i.Id でSELECT結果のIDカラムを取得可能

Tableでテーブル名を指定しているけど、公式の通りModelで該当テーブルに相当する構造体を指定して取得というのも可能です

メモ

structを作らずに、var i *int64ってやって取得できないものかと思ったけど、Scan called without calling Next というエラーで取得はできなかった。この辺はまた調べないとよくわからないな、、