
[code]

    db.Preload("Orders").Preload("Profile").Preload("Role").Find(&users)
    //// SELECT * FROM users;
    //// SELECT * FROM orders WHERE user_id IN (1,2,3,4); // has many
    //// SELECT * FROM profiles WHERE user_id IN (1,2,3,4); // has one
    //// SELECT * FROM roles WHERE id IN (4,5,6); // belongs to
    
[/code]

gormでPreloadを使うとき、上の例のように単数形でテーブル名を指定してもSQLでは複数形になります。(Profile -> profiles)  
テーブル名を単数形で指定する方法はあるでしょうか？


CC BY-SA 4.0
2018-10-31T08:27:45.123
49819
2022-08-20T17:14:11.560
30780
question
go gorm
gormでPreloadするときのテーブル名


GORM はデフォルトだとテーブル名として必ず複数形を選ぶようになっています。強い理由が無いのであれば、この慣例にしたがうようにすると面倒が少ないです。

どうしてもこの挙動を変えたいのであれば、`Tabler` インターフェースを定義する必要があります。

[code]

    func (Profile) TableName() string {
      return "profile"
    }
    
[/code]

ドキュメント：

  * <https://gorm.io/docs/models.html#Conventions>
  * <https://gorm.io/docs/conventions.html#Pluralized-Table-Name>


CC BY-SA 4.0
2022-08-20T17:14:11.560
90657
2022-08-20T17:14:11.560
19110
49819
answer