go第三方库文档 数据库操作gorm


// go第三方库文档 数据库操作gorm
// https://pkg.go.dev/github.com/jinzhu/gorm

func AddNamingStrategy(ns *NamingStrategy)
func IsByteArrayOrSlice(value reflect.Value) bool
func IsRecordNotFoundError(err error) bool
func RegisterDialect(name string, dialect Dialect)
func ToColumnName(name string) string
func ToDBName(name string) string
func ToTableName(name string) string
type Association
func (association *Association) Append(values ...interface{}) *Association
func (association *Association) Clear() *Association
func (association *Association) Count() int
func (association *Association) Delete(values ...interface{}) *Association
func (association *Association) Find(value interface{}) *Association
func (association *Association) Replace(values ...interface{}) *Association
type Callback
func (c *Callback) Create() *CallbackProcessor
func (c *Callback) Delete() *CallbackProcessor
func (c *Callback) Query() *CallbackProcessor
func (c *Callback) RowQuery() *CallbackProcessor
func (c *Callback) Update() *CallbackProcessor
type CallbackProcessor
func (cp *CallbackProcessor) After(callbackName string) *CallbackProcessor
func (cp *CallbackProcessor) Before(callbackName string) *CallbackProcessor
func (cp *CallbackProcessor) Get(callbackName string) (callback func(scope *Scope))
func (cp *CallbackProcessor) Register(callbackName string, callback func(scope *Scope))
func (cp *CallbackProcessor) Remove(callbackName string)
func (cp *CallbackProcessor) Replace(callbackName string, callback func(scope *Scope))
type DB
func Open(dialect string, args ...interface{}) (db *DB, err error)
func (s *DB) AddError(err error) error
func (s *DB) AddForeignKey(field string, dest string, onDelete string, onUpdate string) *DB
func (s *DB) AddIndex(indexName string, columns ...string) *DB
func (s *DB) AddUniqueIndex(indexName string, columns ...string) *DB
func (s *DB) Assign(attrs ...interface{}) *DB
func (s *DB) Association(column string) *Association
func (s *DB) Attrs(attrs ...interface{}) *DB
func (s *DB) AutoMigrate(values ...interface{}) *DB
func (s *DB) Begin() *DB
func (s *DB) BeginTx(ctx context.Context, opts *sql.TxOptions) *DB
func (s *DB) BlockGlobalUpdate(enable bool) *DB
func (s *DB) Callback() *Callback
func (s *DB) Close() error
func (s *DB) Commit() *DB
func (s *DB) CommonDB() SQLCommon
func (s *DB) Count(value interface{}) *DB
func (s *DB) Create(value interface{}) *DB
func (s *DB) CreateTable(models ...interface{}) *DB
func (s *DB) DB() *sql.DB
func (s *DB) Debug() *DB
func (s *DB) Delete(value interface{}, where ...interface{}) *DB
func (s *DB) Dialect() Dialect
func (s *DB) DropColumn(column string) *DB
func (s *DB) DropTable(values ...interface{}) *DB
func (s *DB) DropTableIfExists(values ...interface{}) *DB
func (s *DB) Exec(sql string, values ...interface{}) *DB
func (s *DB) Find(out interface{}, where ...interface{}) *DB
func (s *DB) First(out interface{}, where ...interface{}) *DB
func (s *DB) FirstOrCreate(out interface{}, where ...interface{}) *DB
func (s *DB) FirstOrInit(out interface{}, where ...interface{}) *DB
func (s *DB) Get(name string) (value interface{}, ok bool)
func (s *DB) GetErrors() []error
func (s *DB) Group(query string) *DB
func (s *DB) HasBlockGlobalUpdate() bool
func (s *DB) HasTable(value interface{}) bool
func (s *DB) Having(query interface{}, values ...interface{}) *DB
func (s *DB) InstantSet(name string, value interface{}) *DB
func (s *DB) Joins(query string, args ...interface{}) *DB
func (s *DB) Last(out interface{}, where ...interface{}) *DB
func (s *DB) Limit(limit interface{}) *DB
func (s *DB) LogMode(enable bool) *DB
func (s *DB) Model(value interface{}) *DB
func (s *DB) ModifyColumn(column string, typ string) *DB
func (s *DB) New() *DB
func (s *DB) NewRecord(value interface{}) bool
func (s *DB) NewScope(value interface{}) *Scope
func (s *DB) Not(query interface{}, args ...interface{}) *DB
func (s *DB) Offset(offset interface{}) *DB
func (s *DB) Omit(columns ...string) *DB
func (s *DB) Or(query interface{}, args ...interface{}) *DB
func (s *DB) Order(value interface{}, reorder ...bool) *DB
func (s *DB) Pluck(column string, value interface{}) *DB
func (s *DB) Preload(column string, conditions ...interface{}) *DB
func (s *DB) Preloads(out interface{}) *DB
func (s *DB) QueryExpr() *SqlExpr
func (s *DB) Raw(sql string, values ...interface{}) *DB
func (s *DB) RecordNotFound() bool
func (s *DB) Related(value interface{}, foreignKeys ...string) *DB
func (s *DB) RemoveForeignKey(field string, dest string) *DB
func (s *DB) RemoveIndex(indexName string) *DB
func (s *DB) Rollback() *DB
func (s *DB) RollbackUnlessCommitted() *DB
func (s *DB) Row() *sql.Row
func (s *DB) Rows() (*sql.Rows, error)
func (s *DB) Save(value interface{}) *DB
func (s *DB) Scan(dest interface{}) *DB
func (s *DB) ScanRows(rows *sql.Rows, result interface{}) error
func (s *DB) Scopes(funcs ...func(*DB) *DB) *DB
func (s *DB) Select(query interface{}, args ...interface{}) *DB
func (s *DB) Set(name string, value interface{}) *DB
func (s *DB) SetJoinTableHandler(source interface{}, column string, handler JoinTableHandlerInterface)
func (s *DB) SetLogger(log logger)
func (s *DB) SetNowFuncOverride(nowFuncOverride func() time.Time) *DB
func (s *DB) SingularTable(enable bool)
func (s *DB) SubQuery() *SqlExpr
func (s *DB) Table(name string) *DB
func (s *DB) Take(out interface{}, where ...interface{}) *DB
func (s *DB) Transaction(fc func(tx *DB) error) (err error)
func (s *DB) Unscoped() *DB
func (s *DB) Update(attrs ...interface{}) *DB
func (s *DB) UpdateColumn(attrs ...interface{}) *DB
func (s *DB) UpdateColumns(values interface{}) *DB
func (s *DB) Updates(values interface{}, ignoreProtectedAttrs ...bool) *DB
func (s *DB) Where(query interface{}, args ...interface{}) *DB
type DefaultForeignKeyNamer
func (DefaultForeignKeyNamer) BuildKeyName(kind, tableName string, fields ...string) string
type Dialect
func GetDialect(name string) (dialect Dialect, ok bool)
type Errors
func (errs Errors) Add(newErrors ...error) Errors
func (errs Errors) Error() string
func (errs Errors) GetErrors() []error
type Field
func (field *Field) Set(value interface{}) (err error)
type JoinTableForeignKey
type JoinTableHandler
func (s JoinTableHandler) Add(handler JoinTableHandlerInterface, db *DB, source interface{}, ...) error
func (s JoinTableHandler) Delete(handler JoinTableHandlerInterface, db *DB, sources ...interface{}) error
func (s *JoinTableHandler) DestinationForeignKeys() []JoinTableForeignKey
func (s JoinTableHandler) JoinWith(handler JoinTableHandlerInterface, db *DB, source interface{}) *DB
func (s *JoinTableHandler) Setup(relationship *Relationship, tableName string, source reflect.Type, ...)
func (s *JoinTableHandler) SourceForeignKeys() []JoinTableForeignKey
func (s JoinTableHandler) Table(db *DB) string
type JoinTableHandlerInterface
type JoinTableSource
type LogWriter
type Logger
func (logger Logger) Print(values ...interface{})
type Model
type ModelStruct
func (s *ModelStruct) TableName(db *DB) string
type Namer
type NamingStrategy
func (ns *NamingStrategy) ColumnName(name string) string
func (ns *NamingStrategy) DBName(name string) string
func (ns *NamingStrategy) TableName(name string) string
type Relationship
type RowQueryResult
type RowsQueryResult
type SQLCommon
type Scope
func (scope *Scope) AddToVars(value interface{}) string
func (scope *Scope) Begin() *Scope
func (scope *Scope) CallMethod(methodName string)
func (scope *Scope) CombinedConditionSql() string
func (scope *Scope) CommitOrRollback() *Scope
func (scope *Scope) DB() *DB
func (scope *Scope) Dialect() Dialect
func (scope *Scope) Err(err error) error
func (scope *Scope) Exec() *Scope
func (scope *Scope) FieldByName(name string) (field *Field, ok bool)
func (scope *Scope) Fields() []*Field
func (scope *Scope) Get(name string) (interface{}, bool)
func (scope *Scope) GetModelStruct() *ModelStruct
func (scope *Scope) GetStructFields() (fields []*StructField)
func (scope *Scope) HasColumn(column string) bool
func (scope *Scope) HasError() bool
func (scope *Scope) IndirectValue() reflect.Value
func (scope *Scope) InstanceGet(name string) (interface{}, bool)
func (scope *Scope) InstanceID() string
func (scope *Scope) InstanceSet(name string, value interface{}) *Scope
func (scope *Scope) Log(v ...interface{})
func (scope *Scope) New(value interface{}) *Scope
func (scope *Scope) NewDB() *DB
func (scope *Scope) OmitAttrs() []string
func (scope *Scope) PrimaryField() *Field
func (scope *Scope) PrimaryFields() (fields []*Field)
func (scope *Scope) PrimaryKey() string
func (scope *Scope) PrimaryKeyValue() interface{}
func (scope *Scope) PrimaryKeyZero() bool
func (scope *Scope) Quote(str string) string
func (scope *Scope) QuotedTableName() (name string)
func (scope *Scope) Raw(sql string) *Scope
func (scope *Scope) SQLDB() SQLCommon
func (scope *Scope) SelectAttrs() []string
func (scope *Scope) Set(name string, value interface{}) *Scope
func (scope *Scope) SetColumn(column interface{}, value interface{}) error
func (scope *Scope) SkipLeft()
func (scope *Scope) TableName() string
type SqlExpr
func Expr(expression string, args ...interface{}) *SqlExpr
type StructField
func (sf *StructField) TagSettingsDelete(key string)
func (sf *StructField) TagSettingsGet(key string) (string, bool)
func (sf *StructField) TagSettingsSet(key, val string)


var (
    //ErrRecordNotFound返回“记录未找到错误”。仅在尝试使用结构查询数据库时发生;使用切片进行查询不会返回此错误
    ErrRecordNotFound = errors.New("record not found")
    //尝试使用无效SQL进行查询时,会出现ErrInvalidSQL
    ErrInvalidSQL = errors.New("invalid SQL")
    //当您尝试“提交”或“回滚”时,会发生ErrInvalidTransaction`
    ErrInvalidTransaction = errors.New("no valid transaction")
    //当您试图用“开始”启动事务时,ErrCantStartTransaction无法启动事务`
    ErrCantStartTransaction = errors.New("can't start transaction")
    //ErrUnaddressable unaddressable值
    ErrUnaddressable = errors.New("using unaddressable value")
)

var DefaultCallback = &Callback{logger: nopLogger{}}

// 默认回调gorm定义的默认回调
var DefaultTableNameHandler = func(db *DB, defaultTableName string) string {
	return defaultTableName
}

// 默认表名处理程序默认表名处理程序
var LogFormatter = func(values ...interface{}) (messages []interface{}) {
	if len(values) > 1 {
		var (
			sql             string
			formattedValues []string
			level           = values[0]
			currentTime     = "\n\033[33m[" + NowFunc().Format("2006-01-02 15:04:05") + "]\033[0m"
			source          = fmt.Sprintf("\033[35m(%v)\033[0m", values[1])
		)

		messages = []interface{}{source, currentTime}

		if len(values) == 2 {

			currentTime = currentTime[1:]

			source = fmt.Sprintf("\033[35m%v\033[0m", values[1])

			messages = []interface{}{currentTime, source}
		}

		if level == "sql" {

			messages = append(messages, fmt.Sprintf(" \033[36;1m[%.2fms]\033[0m ", float64(values[2].(time.Duration).Nanoseconds()/1e4)/100.0))

			for _, value := range values[4].([]interface{}) {
				indirectValue := reflect.Indirect(reflect.ValueOf(value))
				if indirectValue.IsValid() {
					value = indirectValue.Interface()
					if t, ok := value.(time.Time); ok {
						if t.IsZero() {
							formattedValues = append(formattedValues, fmt.Sprintf("'%v'", "0000-00-00 00:00:00"))
						} else {
							formattedValues = append(formattedValues, fmt.Sprintf("'%v'", t.Format("2006-01-02 15:04:05")))
						}
					} else if b, ok := value.([]byte); ok {
						if str := string(b); isPrintable(str) {
							formattedValues = append(formattedValues, fmt.Sprintf("'%v'", str))
						} else {
							formattedValues = append(formattedValues, "''")
						}
					} else if r, ok := value.(driver.Valuer); ok {
						if value, err := r.Value(); err == nil && value != nil {
							formattedValues = append(formattedValues, fmt.Sprintf("'%v'", value))
						} else {
							formattedValues = append(formattedValues, "NULL")
						}
					} else {
						switch value.(type) {
						case int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, float32, float64, bool:
							formattedValues = append(formattedValues, fmt.Sprintf("%v", value))
						default:
							formattedValues = append(formattedValues, fmt.Sprintf("'%v'", value))
						}
					}
				} else {
					formattedValues = append(formattedValues, "NULL")
				}
			}

			if numericPlaceHolderRegexp.MatchString(values[3].(string)) {
				sql = values[3].(string)
				for index, value := range formattedValues {
					placeholder := fmt.Sprintf(`\$%d([^\d]|$)`, index+1)
					sql = regexp.MustCompile(placeholder).ReplaceAllString(sql, value+"$1")
				}
			} else {
				formattedValuesLength := len(formattedValues)
				for index, value := range sqlRegexp.Split(values[3].(string), -1) {
					sql += value
					if index < formattedValuesLength {
						sql += formattedValues[index]
					}
				}
			}

			messages = append(messages, sql)
			messages = append(messages, fmt.Sprintf(" \n\033[36;31m[%v]\033[0m ", strconv.FormatInt(values[5].(int64), 10)+" rows affected or returned "))
		} else {
			messages = append(messages, "\033[31;1m")
			messages = append(messages, values[2:]...)
			messages = append(messages, "\033[0m")
		}
	}

	return
}

var NowFunc = func() time.Time {
	return time.Now()
}

// NowFunc返回当前时间,导出此函数是为了使开发人员能够灵活地根据自己的需要进行自定义,例如:
gorm.NowFunc = func() time.Time {
  return time.Now().UTC()
}

var ParseFieldStructForDialect = func(field *StructField, dialect Dialect) (fieldValue reflect.Value, sqlType string, size int, additionalType string) {
	// Get redirected field type
	var (
		reflectType = field.Struct.Type
		dataType, _ = field.TagSettingsGet("TYPE")
	)

	for reflectType.Kind() == reflect.Ptr {
		reflectType = reflectType.Elem()
	}

	fieldValue = reflect.Indirect(reflect.New(reflectType))

	if gormDataType, ok := fieldValue.Interface().(interface {
		GormDataType(Dialect) string
	}); ok {
		dataType = gormDataType.GormDataType(dialect)
	}

	if dataType == "" {
		var getScannerValue func(reflect.Value)
		getScannerValue = func(value reflect.Value) {
			fieldValue = value
			if _, isScanner := reflect.New(fieldValue.Type()).Interface().(sql.Scanner); isScanner && fieldValue.Kind() == reflect.Struct {
				getScannerValue(fieldValue.Field(0))
			}
		}
		getScannerValue(fieldValue)
	}

	if num, ok := field.TagSettingsGet("SIZE"); ok {
		size, _ = strconv.Atoi(num)
	} else {
		size = 255
	}

	notNull, _ := field.TagSettingsGet("NOT NULL")
	unique, _ := field.TagSettingsGet("UNIQUE")
	additionalType = notNull + " " + unique
	if value, ok := field.TagSettingsGet("DEFAULT"); ok {
		additionalType = additionalType + " DEFAULT " + value
	}

	if value, ok := field.TagSettingsGet("COMMENT"); ok {
		additionalType = additionalType + " COMMENT " + value
	}

	return fieldValue, dataType, size, strings.TrimSpace(additionalType)
}

// ParseFieldStructForDialect获取字段的sql数据类型
var TheNamingStrategy = &NamingStrategy{
	DB:     defaultNamer,
	Table:  defaultNamer,
	Column: defaultNamer,
}
// 正在使用defaultNamingStrategy初始化NamingStrategy

// 功能
func AddNamingStrategy 
func AddNamingStrategy(ns *NamingStrategy)
// AddNamingStrategy设置命名策略

func IsByteArrayOrSlice 
func IsByteArrayOrSlice(value reflect.Value) bool
// IsByteArrayOrSlice返回反射值为数组或切片的真值

func IsRecordNotFoundError 
func IsRecordNotFoundError(err error) bool
// 如果错误包含RecordNotFound错误,IsRecordNotFoundError将返回true

func RegisterDialect 
func RegisterDialect(name string, dialect Dialect)
// RegisterDialect注册新方言

func ToColumnName 
func ToColumnName(name string) string
// ToColumnName将字符串转换为db名称

func ToDBName 
func ToDBName(name string) string
// ToDBName将字符串转换为数据库名称

func ToTableName 
func ToTableName(name string) string
// ToTableName将字符串转换为表名

// 类型
type Association 
type Association struct {
    Error error
    //包含已过滤或未报告的字段
}
// 关联模式包含一些帮助器方法,可以轻松处理关系事务。

func (*Association) Append 
func (association *Association) Append(values ...interface{}) *Association
// 为多个添加新关联,为多个添加新关联,为多个替换当前关联,属于

func (*Association) Clear 
func (association *Association) Clear() *Association
// 清除“删除源关联和当前关联之间的关系”,不会删除这些关联

func (*Association) Count 
func (association *Association) Count() int
// Count返回当前关联的计数

func (*Association) Delete 
func (association *Association) Delete(values ...interface{}) *Association
// 删除删除源参数和传递参数之间的关系,但不会删除这些参数

func (*Association) Find 
func (association *Association) Find(value interface{}) *Association
// 找出所有相关的关联

func (*Association) Replace 
func (association *Association) Replace(values ...interface{}) *Association
// 用新关联替换当前关联

type Callback 
type Callback struct {
    //包含已过滤或未报告的字段
}
// 回调是包含所有CRUD回调的结构
// 字段“creates”包含在创建对象时将调用的回调
// 字段“updates”包含更新对象时将调用的回调
// 字段“deletes”包含删除对象时将调用的回调
// 字段“queries”包含回调,当使用诸如Find、First、Related、Association等查询方法查询对象时,将调用回调。。。
// 字段“rowQueries”包含在查询具有行的对象时将调用的回调。。。
// 字段“processors”包含所有回调处理器,将用于按顺序生成上述回调

func (*Callback) Create 
func (c *Callback) Create() *CallbackProcessor
// Create可用于注册用于创建对象的回调
db.Callback().Create().After("gorm:create").Register("plugin:run_after_create", func(*Scope) {
    //业务逻辑
    ...
    //设置错误如果发生错误,将回滚创建
    scope.Err(errors.New("error"))
})

func (*Callback) Delete 
func (c *Callback) Delete() *CallbackProcessor
// Delete可用于注册用于删除对象的回调,有关用法,请参阅“创建”

func (*Callback) Query 
func (c *Callback) Query() *CallbackProcessor
// 查询可用于注册回调,以便使用诸如“Find”、“First”、“Related”、“Association”等查询方法查询对象。。。有关用法,请参阅“创建”

func (*Callback) RowQuery 
func (c *Callback) RowQuery() *CallbackProcessor
// RowQuery可用于注册回调以查询具有“Row”和“Rows”的对象,有关用法,请参阅“Create”

func (*Callback) Update 
func (c *Callback) Update() *CallbackProcessor
// Update可用于注册用于更新对象的回调,有关用法,请参阅“创建”

type CallbackProcessor 
type CallbackProcessor struct {
    /包含已过滤或未报告的字段
}
// CallbackProcessor包含回调信息

func (*CallbackProcessor) After 
func (cp *CallbackProcessor) After(callbackName string) *CallbackProcessor
// 在回调“callbackName”之后插入新回调后,请参阅“Callbacks.Create”`

func (*CallbackProcessor) Before 
func (cp *CallbackProcessor) Before(callbackName string) *CallbackProcessor
// 在回调“callbackName”之前插入新回调之前,请参阅“Callbacks.Create”`

func (*CallbackProcessor) Get 
func (cp *CallbackProcessor) Get(callbackName string) (callback func(scope *Scope))
// 获取注册回调
db.Callback().Create().Get("gorm:create")

func (*CallbackProcessor) Register 
func (cp *CallbackProcessor) Register(callbackName string, callback func(scope *Scope))
// 注册新回调,请参阅“Callbacks.Create”`

func (*CallbackProcessor) Remove 
func (cp *CallbackProcessor) Remove(callbackName string)
// 删除已注册的回调
db.Callback().Create().Remove("gorm:update_time_stamp_when_create")

func (*CallbackProcessor) Replace 
func (cp *CallbackProcessor) Replace(callbackName string, callback func(scope *Scope))
// 用新的回调函数替换已注册的回调函数
    db.Callback().Create().Replace("gorm:update_time_stamp_when_create", func(*Scope) {
		   scope.SetColumn("CreatedAt", now)
		   scope.SetColumn("UpdatedAt", now)
    })

type DB 
type DB struct {
	sync.RWMutex
	Value        interface{}
	Error        error
	RowsAffected int64
    //包含已过滤或未报告的字段
}
// 数据库包含当前数据库连接的信息

func Open 
func Open(dialect string, args ...interface{}) (db *DB, err error)
// 打开初始化新的数据库连接,需要先导入驱动程序,例如:
import _ "github.com/go-sql-driver/mysql"
func main() {
  db, err := gorm.Open("mysql", "user:password@/dbname?charset=utf8&parseTime=True&loc=Local")
}
// GORM包装了一些驱动程序,以便更容易记住驱动程序的导入路径,因此您可以使用
import _ "github.com/jinzhu/gorm/dialects/mysql"
// import _ "github.com/jinzhu/gorm/dialects/postgres"
// import _ "github.com/jinzhu/gorm/dialects/sqlite"
// import _ "github.com/jinzhu/gorm/dialects/mssql"

func (*DB) AddError 
func (s *DB) AddError(err error) error
// 加法器将错误添加到数据库

func (*DB) AddForeignKey 
func (s *DB) AddForeignKey(field string, dest string, onDelete string, onUpdate string) *DB
// AddForeignKey将外键添加到给定范围,例如:
db.Model(&User{}).AddForeignKey("city_id", "cities(id)", "RESTRICT", "RESTRICT")

func (*DB) AddIndex 
func (s *DB) AddIndex(indexName string, columns ...string) *DB
// AddIndex为具有给定名称的列添加索引

func (*DB) AddUniqueIndex 
func (s *DB) AddUniqueIndex(indexName string, columns ...string) *DB
// AddUniqueIndex为具有给定名称的列添加唯一索引

func (*DB) Assign 
func (s *DB) Assign(attrs ...interface{}) *DB
// 无论是否使用'FirstOrInit'找到带参数的赋值结果https://jinzhu.github.io/gorm/crud.html#firstorinit 或“第一个或创建”https://jinzhu.github.io/gorm/crud.html#firstorcreate

func (*DB) Association 
func (s *DB) Association(column string) *Association
// 关联启动“关联模式”要在该模式下启动easir,请参阅:https://jinzhu.github.io/gorm/associations.html#association-模式

func (*DB) Attrs 
func (s *DB) Attrs(attrs ...interface{}) *DB
// 如果找不到带有“FirstOrInit”的记录,则Attrs将使用参数初始化结构https://jinzhu.github.io/gorm/crud.html#firstorinit 或“第一个或创建”https://jinzhu.github.io/gorm/crud.html#firstorcreate

func (*DB) AutoMigrate 
func (s *DB) AutoMigrate(values ...interface{}) *DB
// 自动迁移为给定模型运行自动迁移,只会添加缺少的字段,不会删除/更改当前数据

func (*DB) Begin 
func (s *DB) Begin() *DB
// 开始一项交易

func (*DB) BeginTx 
func (s *DB) BeginTx(ctx context.Context, opts *sql.TxOptions) *DB
// BeginTx使用选项开始事务

func (*DB) BlockGlobalUpdate 
func (s *DB) BlockGlobalUpdate(enable bool) *DB
// BlockGlobalUpdate如果为true,则在更新/删除时生成一个错误,而不包含where子句。这是为了防止更新/删除空对象时出现最终错误

func (*DB) Callback 
func (s *DB) Callback() *Callback
// 回调返回`Callbacks`容器,您可以使用它添加/更改/删除回调
db.Callback().Create().Register("update_created_at", updateCreated)
// 参考https://jinzhu.github.io/gorm/development.html#callbacks

func (*DB) Close 
func (s *DB) Close() error
// 关闭当前数据库连接。如果数据库连接不是io.Closer,则返回错误。

func (*DB) Commit 
func (s *DB) Commit() *DB
// 提交事务

func (*DB) CommonDB 
func (s *DB) CommonDB() SQLCommon
// CommonDB返回底层的“*sql.DB”或“*sql.Tx”实例,主要用于允许与遗留的非GORM代码共存。

func (*DB) Count 
func (s *DB) Count(value interface{}) *DB
// 计数获取一个模型的记录数

func (*DB) Create 
func (s *DB) Create(value interface{}) *DB
// 创建并将值插入数据库

func (*DB) CreateTable 
func (s *DB) CreateTable(models ...interface{}) *DB
// CreateTable为模型创建表格

func (*DB) DB 
func (s *DB) DB() *sql.DB
// DB get`*sql.DB`从当前连接如果基础数据库连接不是*sql.DB,则返回nil

func (*DB) Debug 
func (s *DB) Debug() *DB
// 调试启动调试模式

func (*DB) Delete 
func (s *DB) Delete(value interface{}, where ...interface{}) *DB
// 删除与给定条件匹配的删除值,如果该值具有主键,则将包含主键作为条件警告。如果模型具有DeletedAt字段,GORM将仅将字段DeletedAt的值设置为当前时间

func (*DB) Dialect 
func (s *DB) Dialect() Dialect
// 方言得到方言

func (*DB) DropColumn 
func (s *DB) DropColumn(column string) *DB
// 删除列删除列

func (*DB) DropTable 
func (s *DB) DropTable(values ...interface{}) *DB
// DropTable用于模型的DropTable

func (*DB) DropTableIfExists 
func (s *DB) DropTableIfExists(values ...interface{}) *DB
// DropTableIfExists如果存在DropTable

func (*DB) Exec 
func (s *DB) Exec(sql string, values ...interface{}) *DB
// 执行原始sql

func (*DB) Find 
func (s *DB) Find(out interface{}, where ...interface{}) *DB
// 查找与给定条件匹配的记录

func (*DB) First 
func (s *DB) First(out interface{}, where ...interface{}) *DB
// 首先查找符合给定条件的第一条记录,按主键排序

func (*DB) FirstOrCreate 
func (s *DB) FirstOrCreate(out interface{}, where ...interface{}) *DB
// first或创建查找第一个匹配的记录或创建具有给定条件的新记录(仅适用于结构、映射条件)https://jinzhu.github.io/gorm/crud.html#firstorcreate

func (*DB) FirstOrInit 
func (s *DB) FirstOrInit(out interface{}, where ...interface{}) *DB
// FirstOrInit查找第一个匹配的记录或使用给定条件初始化新记录(仅适用于结构、映射条件)https://jinzhu.github.io/gorm/crud.html#firstorinit

func (*DB) Get 
func (s *DB) Get(name string) (value interface{}, ok bool)
// 按名称获取设置

func (*DB) GetErrors 
func (s *DB) GetErrors() []error
// GetErrors从数据库中获取发生的错误

func (*DB) Group 
func (s *DB) Group(query string) *DB
// 组指定查找上的组方法

func (*DB) HasBlockGlobalUpdate 
func (s *DB) HasBlockGlobalUpdate() bool
// HasBlockGlobalUpdate块的返回状态

func (*DB) HasTable 
func (s *DB) HasTable(value interface{}) bool
// HasTable检查是否有表

func (*DB) Having 
func (s *DB) Having(query interface{}, values ...interface{}) *DB
// 规定了分组的条件

func (*DB) InstantSet 
func (s *DB) InstantSet(name string, value interface{}) *DB
// InstantSet instant set设置,将影响当前数据库

func (*DB) Joins 
func (s *DB) Joins(query string, args ...interface{}) *DB
// 联接指定联接条件
db.Joins("JOIN emails ON emails.user_id = users.id AND emails.email = ?", "[email protected]").Find(&user)

func (*DB) Last 
func (s *DB) Last(out interface{}, where ...interface{}) *DB
// 最后查找与给定条件匹配的最后一条记录,按主键排序

func (*DB) Limit 
func (s *DB) Limit(limit interface{}) *DB
// 限制指定要检索的记录数

func (*DB) LogMode 
func (s *DB) LogMode(enable bool) *DB
// LogMode设置日志模式,对于详细日志为'true',对于无日志为'false',默认情况下,将只打印错误日志

func (*DB) Model 
func (s *DB) Model(value interface{}) *DB
// 模型指定要运行db操作的模型
//将所有用户的名称更新为“hello”`
db.Model(&User{}).Update("name", "hello")
//如果用户的主键为非空,则将其用作条件,然后仅将用户名更新为“hello”`
db.Model(&user).Update("name", "hello")

func (*DB) ModifyColumn 
func (s *DB) ModifyColumn(column string, typ string) *DB
// ModifyColumn将列修改为类型

func (*DB) New 
func (s *DB) New() *DB
// 新建克隆不带搜索条件的新数据库连接

func (*DB) NewRecord 
func (s *DB) NewRecord(value interface{}) bool
// NewRecord检查值的主键是否为空

func (*DB) NewScope 
func (s *DB) NewScope(value interface{}) *Scope
// NewScope为当前操作创建作用域

func (*DB) Not 
func (s *DB) Not(query interface{}, args ...interface{}) *DB
// 不筛选与当前条件不匹配的记录,类似于“Where”`

func (*DB) Offset 
func (s *DB) Offset(offset interface{}) *DB
// 偏移量指定开始返回记录之前要跳过的记录数

func (*DB) Omit 
func (s *DB) Omit(columns ...string) *DB
// 忽略指定在保存到数据库以进行创建、更新时要忽略的字段

func (*DB) Or 
func (s *DB) Or(query interface{}, args ...interface{}) *DB
// 或筛选与条件或此条件匹配的记录,类似于“Where”`

func (*DB) Order 
func (s *DB) Order(value interface{}, reorder ...bool) *DB
// 顺序指定从数据库检索记录时的顺序,将reorder设置为“true”以覆盖定义的条件
db.Order("name DESC")
db.Order("name DESC", true) // reorder
db.Order(gorm.Expr("name = ? DESC", "first")) // sql expression

func (*DB) Pluck 
func (s *DB) Pluck(column string, value interface{}) *DB
// 用于将模型中的单个列作为映射查询的Pull
var ages []int64
db.Find(&users).Pluck("age", &ages)

func (*DB) Preload 
func (s *DB) Preload(column string, conditions ...interface{}) *DB
// 预加载与给定条件的预加载关联
db.Preload("Orders", "state NOT IN (?)", "cancelled").Find(&users)

func (*DB) Preloads 
func (s *DB) Preloads(out interface{}) *DB
// 预加载预加载关系,不接触

func (*DB) QueryExpr 
func (s *DB) QueryExpr() *SqlExpr
// QueryExpr将查询作为SqlExpr对象返回

func (*DB) Raw 
func (s *DB) Raw(sql string, values ...interface{}) *DB
// Raw使用Raw sql作为条件,除非被其他方法调用,否则不会运行它
db.Raw("SELECT name, age FROM users WHERE name = ?", 3).Scan(&result)

func (*DB) RecordNotFound 
func (s *DB) RecordNotFound() bool
// RecordNotFound检查是否返回ErrRecordNotFound错误

func (*DB) Related 
func (s *DB) Related(value interface{}, foreignKeys ...string) *DB
// 关联得到关联关联

func (*DB) RemoveForeignKey 
func (s *DB) RemoveForeignKey(field string, dest string) *DB
// RemoveForeignKey从给定范围中删除外键,例如:

// db.Model(&User{}).RemoveForeignKey(“city_id”,“cities(id)”)
func (*DB) RemoveIndex 
func (s *DB) RemoveIndex(indexName string) *DB
// RemoveIndex删除名为的索引

func (*DB) Rollback 
func (s *DB) Rollback() *DB
// 回滚回滚事务

func (*DB) RollbackUnlessCommitted 
func (s *DB) RollbackUnlessCommitted() *DB
// 回滚未提交回滚尚未提交的事务。

func (*DB) Row 
func (s *DB) Row() *sql.Row
// 行返回带有给定条件的“*sql.Row”

func (*DB) Rows 
func (s *DB) Rows() (*sql.Rows, error)
// 行返回带有给定条件的“*sql.Rows”

func (*DB) Save 
func (s *DB) Save(value interface{}) *DB
// 将更新值保存在数据库中,如果该值没有主键,将插入它

func (*DB) Scan 
func (s *DB) Scan(dest interface{}) *DB
// 将扫描值扫描到结构

func (*DB) ScanRows 
func (s *DB) ScanRows(rows *sql.Rows, result interface{}) error
// ScanRows扫描“*sql.Rows”以给出结构

func (*DB) Scopes 
func (s *DB) Scopes(funcs ...func(*DB) *DB) *DB
// 作用域将当前数据库连接传递给参数“func(*DB)*DB”,该参数可用于动态添加条件
func AmountGreaterThan1000(db *gorm.DB) *gorm.DB {
    return db.Where("amount > ?", 1000)
}

func OrderStatus(status []string) func (db *gorm.DB) *gorm.DB {
    return func (db *gorm.DB) *gorm.DB {
        return db.Scopes(AmountGreaterThan1000).Where("status in (?)", status)
    }
}
db.Scopes(AmountGreaterThan1000, OrderStatus([]string{"paid", "shipped"})).Find(&orders)
// 参考https://jinzhu.github.io/gorm/crud.html#scopes

func (*DB) Select 
func (s *DB) Select(query interface{}, args ...interface{}) *DB
// 选择“指定查询时要从数据库检索的字段”,默认情况下,将选择所有字段;创建/更新时,指定要保存到数据库的字段

func (*DB) Set 
func (s *DB) Set(name string, value interface{}) *DB
// 可以在回调中使用的“按名称设置”将克隆一个新数据库,并更新其设置

func (*DB) SetJoinTableHandler 
func (s *DB) SetJoinTableHandler(source interface{}, column string, handler JoinTableHandlerInterface)
// SetJoinTableHandler为关系设置模型的联接表处理程序

func (*DB) SetLogger 
func (s *DB) SetLogger(log logger)
// 设置记录器替换默认记录器

func (*DB) SetNowFuncOverride 
func (s *DB) SetNowFuncOverride(nowFuncOverride func() time.Time) *DB
// SetNowFuncOverride设置创建新时间戳时要使用的函数

func (*DB) SingularTable 
func (s *DB) SingularTable(enable bool)
// 默认情况下,SingularTable使用singular表

func (*DB) SubQuery 
func (s *DB) SubQuery() *SqlExpr
// 子查询将查询作为子查询返回

func (*DB) Table 
func (s *DB) Table(name string) *DB
// 表指定要运行db操作的表

func (*DB) Take 
func (s *DB) Take(out interface{}, where ...interface{}) *DB
// 获取并返回与给定条件匹配的记录,顺序将取决于数据库实现

func (*DB) Transaction 
func (s *DB) Transaction(fc func(tx *DB) error) (err error)
// 事务以块的形式启动事务,返回错误将回滚,否则提交。

func (*DB) Unscoped 
func (s *DB) Unscoped() *DB
// 非范围返回所有记录,包括已删除的记录,参见软删除https://jinzhu.github.io/gorm/crud.html#soft-删除

func (*DB) Update 
func (s *DB) Update(attrs ...interface{}) *DB
// 使用回调更新属性,请参阅:https://jinzhu.github.io/gorm/crud.html#update 警告:当使用struct更新时,GORM不会更新值为零值的字段

func (*DB) UpdateColumn 
func (s *DB) UpdateColumn(attrs ...interface{}) *DB
// UpdateColumn不带回调的更新属性,请参阅:https://jinzhu.github.io/gorm/crud.html#update

func (*DB) UpdateColumns 
func (s *DB) UpdateColumns(values interface{}) *DB
// UpdateColumns不带回调的更新属性,请参阅:https://jinzhu.github.io/gorm/crud.html#update

func (*DB) Updates 
func (s *DB) Updates(values interface{}, ignoreProtectedAttrs ...bool) *DB
// 使用回调更新属性,请参阅:https://jinzhu.github.io/gorm/crud.html#update

func (*DB) Where 
func (s *DB) Where(query interface{}, args ...interface{}) *DB
// 如果返回一个新的关系,过滤具有给定条件的记录,接受'map'、'struct'或'string'作为条件,请参阅http://jinzhu.github.io/gorm/crud.html#query

type DefaultForeignKeyNamer 
type DefaultForeignKeyNamer struct {
// }
// DefaultForeignKeyNamer包含默认外键名生成器方法

func (DefaultForeignKeyNamer) BuildKeyName 
func (DefaultForeignKeyNamer) BuildKeyName(kind, tableName string, fields ...string) string
// BuildKeyName返回给定表、字段和引用的有效键名(外键、索引键)


type Dialect 
type Dialect interface {
    //获取方言的名称
    GetName() string

    //SetDB为方言设置db
    SetDB(db SQLCommon)

    //BindVar返回SQL语句中实际值的占位符,在许多数据库中它是“”,Postgres使用$1
    BindVar(i int) string
    //Quote quotes字段名,通过使用保留字作为字段名来避免SQL解析异常
    Quote(key string) string
    //返回数据的sql类型的DataTypeOf
    DataTypeOf(field *StructField) string

    //HasIndex检查是否有索引
    HasIndex(tableName string, indexName string) bool
    //HasForeignKey检查是否有外键
    HasForeignKey(tableName string, foreignKeyName string) bool
    //删除索引删除索引
    RemoveIndex(tableName string, indexName string) error
    //HasTable检查是否有表
    HasTable(tableName string) bool
    //HasColumn检查是否有列
    HasColumn(tableName string, columnName string) bool
    //ModifyColumn修改列的类型
    ModifyColumn(tableName string, columnName string, typ string) error

    //LimitAndOffsetSQL返回生成的带有Limit和Offset的SQL,因为mssql有特殊情况
    LimitAndOffsetSQL(limit, offset interface{}) (string, error)
    //SelectFromDummyTable返回select值,对于大多数数据库,`select values`只起作用,mysql需要`select value FROM DUAL`
    SelectFromDummyTable() string
    //大多数数据库支持LastInsertId,但mssql需要使用`输出'`
    LastInsertIDOutputInterstitial(tableName, columnName string, columns []string) string
    //LastInsertdReturningSuffix大多数数据库支持LastInsertId,但postgres需要使用'RETURNING'`
    LastInsertIDReturningSuffix(tableName, columnName string) string
    //DefaultValueStr
    DefaultValueStr() string

    //BuildKeyName返回给定表、字段和引用的有效键名(外键、索引键)
    BuildKeyName(kind, tableName string, fields ...string) string

    //NormalizeIndexAndColumn根据每种方言返回有效的索引名和列名
    NormalizeIndexAndColumn(indexName, columnName string) (string, string)

    //CurrentDatabase返回当前数据库名称
    CurrentDatabase() string
}
// 方言接口包含不同于SQL数据库的行为


func GetDialect 
func GetDialect(name string) (dialect Dialect, ok bool)
// 获取指定方言名称的方言

type Errors 
type Errors []error
// 错误包含所有发生的错误

func (Errors) Add 
func (errs Errors) Add(newErrors ...error) Errors
// 添加将错误添加到给定的错误片段中

func (Errors) Error 
func (errs Errors) Error() string
// Error获取已发生的所有错误的片段,并将其作为格式化字符串返回

func (Errors) GetErrors 
func (errs Errors) GetErrors() []error
// GetErrors获取已发生的所有错误,并返回错误片段(错误类型)

type Field 
type Field struct {
	*StructField
	IsBlank bool
	Field   reflect.Value
}
// 字段模型字段定义

func (*Field) Set 
func (field *Field) Set(value interface{}) (err error)
// 为字段设置一个值

type JoinTableForeignKey 
type JoinTableForeignKey struct {
	DBName            string
	AssociationDBName string
}
// JoinTableForeignKey连接表外键结构

type JoinTableHandler 
type JoinTableHandler struct {
	TableName   string          `sql:"-"`
	Source      JoinTableSource `sql:"-"`
	Destination JoinTableSource `sql:"-"`
}
// JoinTableHandler默认联接表处理程序

func (JoinTableHandler) Add 
func (s JoinTableHandler) Add(handler JoinTableHandlerInterface, db *DB, source interface{}, destination interface{}) error
// 在源和目标的联接表中添加创建关系

func (JoinTableHandler) Delete 
func (s JoinTableHandler) Delete(handler JoinTableHandlerInterface, db *DB, sources ...interface{}) error
// 删除源的联接表中的删除关系

func (*JoinTableHandler) DestinationForeignKeys 
func (s *JoinTableHandler) DestinationForeignKeys() []JoinTableForeignKey
// DestinationForeignKeys返回目标外键

func (JoinTableHandler) JoinWith 
func (s JoinTableHandler) JoinWith(handler JoinTableHandlerInterface, db *DB, source interface{}) *DB
// 带有“Join”条件的JoinWith查询

func (*JoinTableHandler) Setup 
func (s *JoinTableHandler) Setup(relationship *Relationship, tableName string, source reflect.Type, destination reflect.Type)
// 安装程序初始化默认联接表处理程序

func (*JoinTableHandler) SourceForeignKeys 
func (s *JoinTableHandler) SourceForeignKeys() []JoinTableForeignKey
// SourceForeignKeys返回源外键

func (JoinTableHandler) Table 
func (s JoinTableHandler) Table(db *DB) string
// 表返回联接表的表名

type JoinTableHandlerInterface 
type JoinTableHandlerInterface interface {
    //初始化联接表处理程序
    Setup(relationship *Relationship, tableName string, source reflect.Type, destination reflect.Type)
    //表返回联接表的表名
    Table(db *DB) string
    //在源和目标的联接表中添加创建关系
    Add(handler JoinTableHandlerInterface, db *DB, source interface{}, destination interface{}) error
    //删除源的联接表中的删除关系
    Delete(handler JoinTableHandlerInterface, db *DB, sources ...interface{}) error
    //带有“Join”条件的JoinWith查询
    JoinWith(handler JoinTableHandlerInterface, db *DB, source interface{}) *DB
    //SourceForeignKeys返回源外键
    SourceForeignKeys() []JoinTableForeignKey
    //DestinationForeignKeys返回目标外键
    DestinationForeignKeys() []JoinTableForeignKey
}
// JoinTableHandlerInterface是一个用于处理许多关系的接口

type JoinTableSource 
type JoinTableSource struct {
	ModelType   reflect.Type
	ForeignKeys []JoinTableForeignKey
}
// JoinTableSource是一个包含模型类型和外键的结构

type LogWriter 
type LogWriter interface {
	Println(v ...interface{})
}
// 日志编写器日志编写器接口

type Logger 
type Logger struct {
	LogWriter
}
// 记录器默认记录器

func (Logger) Print 
func (logger Logger) Print(values ...interface{})
// 打印格式和打印日志

type Model 
type Model struct {
	ID        uint `gorm:"primary_key"`
	CreatedAt time.Time
	UpdatedAt time.Time
	DeletedAt *time.Time `sql:"index"`
}
// 模型基础模型定义,包括可以嵌入到模型中的字段`ID`、`CreatedAt`、`UpdatedAt`、`DeletedAt`

type User struct {
  gorm.Model
}

type ModelStruct 
type ModelStruct struct {
	PrimaryFields []*StructField
	StructFields  []*StructField
	ModelType     reflect.Type
    //包含已过滤或未报告的字段
}
// ModelStruct模型定义

func (*ModelStruct) TableName 
func (s *ModelStruct) TableName(db *DB) string
// TableName返回模型的表名

type Namer 
type Namer func(string) string
// Namer是一种函数类型,它被赋予一个字符串并返回一个字符串

type NamingStrategy 
type NamingStrategy struct {
	DB     Namer
	Table  Namer
	Column Namer
}
// NamingStrategy代表命名策略

func (*NamingStrategy) ColumnName 
func (ns *NamingStrategy) ColumnName(name string) string
// ColumnName按列更改给定名称

func (*NamingStrategy) DBName 
func (ns *NamingStrategy) DBName(name string) string
// DBName通过DB更改给定的名称

func (*NamingStrategy) TableName 
func (ns *NamingStrategy) TableName(name string) string
// TableName按表更改给定的名称

type Relationship 
type Relationship struct {
	Kind                         string
	PolymorphicType              string
	PolymorphicDBName            string
	PolymorphicValue             string
	ForeignFieldNames            []string
	ForeignDBNames               []string
	AssociationForeignFieldNames []string
	AssociationForeignDBNames    []string
	JoinTableHandler             JoinTableHandlerInterface
}
// 关系描述了模型之间的关系

type RowQueryResult 
type RowQueryResult struct {
	Row *sql.Row
}

type RowsQueryResult 
type RowsQueryResult struct {
	Rows  *sql.Rows
	Error error
}

type SQLCommon 
type SQLCommon interface {
	Exec(query string, args ...interface{}) (sql.Result, error)
	Prepare(query string) (*sql.Stmt, error)
	Query(query string, args ...interface{}) (*sql.Rows, error)
	QueryRow(query string, args ...interface{}) *sql.Row
}
// SQLCommon是gorm所需的最小数据库连接功能。由*sql.DB实现。

type Scope 
type Scope struct {
	Search  *search
	Value   interface{}
	SQL     string
	SQLVars []interface{}
    //包含已过滤或未报告的字段
}
// 在数据库上执行任何操作时,作用域包含当前操作的信息

func (*Scope) AddToVars 
func (scope *Scope) AddToVars(value interface{}) string
// AddToVars作为sql的变量添加值,用于防止sql注入

func (*Scope) Begin 
func (scope *Scope) Begin() *Scope
// 开始交易

func (*Scope) CallMethod 
func (scope *Scope) CallMethod(methodName string)
// CallMethod调用范围值的方法,如果它是一个切片,将逐个调用其元素的方法

func (*Scope) CombinedConditionSql 
func (scope *Scope) CombinedConditionSql() string
// 组合条件sql返回组合条件sql

func (*Scope) CommitOrRollback 
func (scope *Scope) CommitOrRollback() *Scope
// CommitterRollback如果没有发生错误,则提交当前事务,否则将回滚它

func (*Scope) DB 
func (scope *Scope) DB() *DB
// DB返回作用域的DB连接

func (*Scope) Dialect 
func (scope *Scope) Dialect() Dialect
// 方言得到方言

func (*Scope) Err 
func (scope *Scope) Err(err error) error
// Err将错误添加到范围

func (*Scope) Exec 
func (scope *Scope) Exec() *Scope
// 执行生成的SQL

func (*Scope) FieldByName 
func (scope *Scope) FieldByName(name string) (field *Field, ok bool)
// FieldByName使用字段名或db名称查找'gorm.Field'

func (*Scope) Fields 
func (scope *Scope) Fields() []*Field
// 字段获取值的字段

func (*Scope) Get 
func (scope *Scope) Get(name string) (interface{}, bool)
// 按名称获取设置

func (*Scope) GetModelStruct 
func (scope *Scope) GetModelStruct() *ModelStruct
// GetModelStruct获取值的模型结构,基于结构和标记定义的关系

func (*Scope) GetStructFields 
func (scope *Scope) GetStructFields() (fields []*StructField)
// GetStructFields获取模型的字段结构

func (*Scope) HasColumn 
func (scope *Scope) HasColumn(column string) bool
// HasColumn检查是否有列

func (*Scope) HasError 
func (scope *Scope) HasError() bool
// HasError检查是否有任何错误

func (*Scope) IndirectValue 
func (scope *Scope) IndirectValue() reflect.Value
// IndirectValue返回范围的反射值的间接值

func (*Scope) InstanceGet 
func (scope *Scope) InstanceGet(name string) (interface{}, bool)
// InstanceGet从当前操作获取实例设置

func (*Scope) InstanceID 
func (scope *Scope) InstanceID() string
// InstanceID获取作用域的InstanceID

func (*Scope) InstanceSet 
func (scope *Scope) InstanceSet(name string, value interface{}) *Scope
// InstanceSet为当前操作设置实例设置,但不为回调中的操作设置实例设置,如保存回调关联

func (*Scope) Log 
func (scope *Scope) Log(v ...interface{})
// 日志打印日志消息

func (*Scope) New 
func (scope *Scope) New(value interface{}) *Scope
// 新建创建不包含搜索信息的新范围

func (*Scope) NewDB 
func (scope *Scope) NewDB() *DB
// 新建数据库创建一个没有搜索信息的新数据库

func (*Scope) OmitAttrs 
func (scope *Scope) OmitAttrs() []string
// OmitAttrs返回省略的属性

func (*Scope) PrimaryField 
func (scope *Scope) PrimaryField() *Field
// PrimaryField返回作用域的主主字段(如果定义了多个主字段),将返回列名为'id'的字段或第一个字段

func (*Scope) PrimaryFields 
func (scope *Scope) PrimaryFields() (fields []*Field)
// PrimaryFields返回作用域的主字段

func (*Scope) PrimaryKey 
func (scope *Scope) PrimaryKey() string
// PrimaryKey获取主字段的db名称

func (*Scope) PrimaryKeyValue 
func (scope *Scope) PrimaryKeyValue() interface{}
// PrimaryKeyValue获取主键的值

func (*Scope) PrimaryKeyZero 
func (scope *Scope) PrimaryKeyZero() bool
// PrimaryKeyZero检查主主字段的值是否为空

func (*Scope) Quote 
func (scope *Scope) Quote(str string) string
// Quote用于引用字符串以对数据库进行转义

func (*Scope) QuotedTableName 
func (scope *Scope) QuotedTableName() (name string)
// QuotedTableName返回带引号的表名

func (*Scope) Raw 
func (scope *Scope) Raw(sql string) *Scope
// 原始集原始sql

func (*Scope) SQLDB 
func (scope *Scope) SQLDB() SQLCommon
// SQLDB return*sql.DB

func (*Scope) SelectAttrs 
func (scope *Scope) SelectAttrs() []string
// SelectAttrs返回所选属性

func (*Scope) Set 
func (scope *Scope) Set(name string, value interface{}) *Scope
// 按名称设置值

func (*Scope) SetColumn 
func (scope *Scope) SetColumn(column interface{}, value interface{}) error
// SetColumn要设置列的值,列可以是字段或字段的名称/dbname

func (*Scope) SkipLeft 
func (scope *Scope) SkipLeft()
// SkipLeft跳过剩余的回调

func (*Scope) TableName 
func (scope *Scope) TableName() string
// TableName返回表名

type SqlExpr 
type SqlExpr struct {
    //包含已过滤或未报告的字段
}
// SQL 表达式

func Expr 
func Expr(expression string, args ...interface{}) *SqlExpr
// Expr生成原始SQL表达式,例如:
DB.Model(&product).Update("price", gorm.Expr("price * ? + ?", 2, 100))

type StructField 
type StructField struct {
	DBName          string
	Name            string
	Names           []string
	IsPrimaryKey    bool
	IsNormal        bool
	IsIgnored       bool
	IsScanner       bool
	HasDefaultValue bool
	Tag             reflect.StructTag
	TagSettings     map[string]string
	Struct          reflect.StructField
	IsForeignKey    bool
	Relationship    *Relationship
    //包含已过滤或未报告的字段
}
// StructField模型字段的结构定义

func (*StructField) TagSettingsDelete 
func (sf *StructField) TagSettingsDelete(key string)
// 标记设置删除删除标记

func (*StructField) TagSettingsGet 
func (sf *StructField) TagSettingsGet(key string) (string, bool)
// TagSettingsGet从标记设置返回标记

func (*StructField) TagSettingsSet 
func (sf *StructField) TagSettingsSet(key, val string)
// 标记设置设置在标记设置映射中设置标记

你可能感兴趣的:(go第三方库文档,go第三方库,golang,开发语言,后端)