スポンサーリンク

[GORM] DefaultTableNameHandlerとTableName()を併用すると?

DefaultTableNameHandler

デフォルトのデーブル名を変更する1つ目の方法としてDefaultTableNameHandlerがあります。使い方は以下。

gorm.DefaultTableNameHandler = func (db *gorm.DB, defaultTableName string) string  {
  return "prefix_" + defaultTableName;
}

TableName()

また対象のstructにTableNameというテーブル名を返すメソッドを追加するとデフォルトのデーブル名を変更できます。

type User struct {} // デフォルトのテーブル名は `users`

// Userのテーブル名を`profiles`にする
func (User) TableName() string {
  return "profiles"
}

併用すると..?

DefaultTableNameHandlerとTableName()を2つとも用いるとTableName()が勝ちます。

ですので、prefixなどを付けたい場合はTableNameで設定しましょう。

参照

複数形のテーブル名

デフォルトのテーブル名の変更

コメント

タイトルとURLをコピーしました