Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- gorm.io/gorm v1.21.15
- модели:
- type Suppliers struct {
- SupplierID int32 `gorm:"column:SupplierID;primaryKey"`
- CompanyName string `gorm:"column:CompanyName"`
- ContactName string `gorm:"column:ContactName"`
- ContactTitle string `gorm:"column:ContactTitle"`
- Address string `gorm:"column:Address"`
- City string `gorm:"column:City"`
- Region string `gorm:"column:Region"`
- PostalCode string `gorm:"column:PostalCode"`
- Country string `gorm:"column:Country"`
- Phone string `gorm:"column:Phone"`
- Fax string `gorm:"column:Fax"`
- HomePage string `gorm:"column:HomePage"`
- }
- type Categories struct {
- CategoryID int32 `gorm:"column:CategoryID;primaryKey"`
- CategoryName string `gorm:"column:CategoryName"`
- Description string `gorm:"column:Description"`
- Picture []byte `gorm:"column:Picture"`
- }
- type Products struct {
- ProductID int32 `gorm:"column:ProductID;primaryKey"`
- ProductName string `gorm:"column:ProductName"`
- SupplierID int32 `gorm:"column:SupplierID"`
- CategoryID int32 `gorm:"column:CategoryID"`
- QuantityPerUnit string `gorm:"column:QuantityPerUnit"`
- UnitPrice float32 `gorm:"column:UnitPrice"`
- UnitsInStock int32 `gorm:"column:UnitsInStock"`
- UnitsOnOrder int32 `gorm:"column:UnitsOnOrder"`
- ReorderLevel int32 `gorm:"column:ReorderLevel"`
- Discontinued bool `gorm:"column:Discontinued"`
- Suppliers []Suppliers `gorm:"foreignKey:SupplierID"`
- Categories []Categories `gorm:"foreignKey:CategoryID"`
- }
- вызов через joins:
- var products []Products
- db.Debug().
- Joins("Suppliers").
- Joins("Categories").
- Find(&products, "[Products].[SupplierID] IN ?", []int32{3, 4})
- fmt.Printf("%#v\n", products)
- сгенерированный sql, в лог не попадает, достал через отладчик, в базе выполняется
- SELECT [products].[ProductID],[products].[ProductName],[products].[SupplierID],[products].[CategoryID],[products].[QuantityPerUnit],[products].[UnitPrice],[products].[UnitsInStock],[products].[UnitsOnOrder],[products].[ReorderLevel],[products].[Discontinued],[Suppliers].[SupplierID] AS [Suppliers__SupplierID],[Suppliers].[CompanyName] AS [Suppliers__CompanyName],[Suppliers].[ContactName] AS [Suppliers__ContactName],[Suppliers].[ContactTitle] AS [Suppliers__ContactTitle],[Suppliers].[Address] AS [Suppliers__Address],[Suppliers].[City] AS [Suppliers__City],[Suppliers].[Region] AS [Suppliers__Region],[Suppliers].[PostalCode] AS [Suppliers__PostalCode],[Suppliers].[Country] AS [Suppliers__Country],[Suppliers].[Phone] AS [Suppliers__Phone],[Suppliers].[Fax] AS [Suppliers__Fax],[Suppliers].[HomePage] AS [Suppliers__HomePage],[Categories].[CategoryID] AS [Categories__CategoryID],[Categories].[CategoryName] AS [Categories__CategoryName],[Categories].[Description] AS [Categories__Description],[Categories].[Picture] AS [Categories__Picture] FROM (([products] LEFT JOIN [suppliers] [Suppliers] ON [products].[ProductID] = [Suppliers].[SupplierID]) LEFT JOIN [categories] [Categories] ON [products].[ProductID] = [Categories].[CategoryID]) WHERE [Products].[SupplierID] IN (2,3)
- panic: reflect: call of reflect.Value.Field on slice Value
- Stack:
- 2 0x0000000000557e3e in testing.tRunner.func1.2
- at D:/Program Files/Go/src/testing/testing.go:1209
- 3 0x0000000000557510 in testing.tRunner.func1
- at D:/Program Files/Go/src/testing/testing.go:1212
- 5 0x000000000050e7d0 in reflect.Value.Field
- at D:/Program Files/Go/src/reflect/value.go:1185
- 6 0x000000000062c84c in gorm.io/gorm/schema.(*Field).setupValuerAndSetter.func4
- at D:/usergo/pkg/mod/gorm.io/gorm@v1.21.15/schema/field.go:445
- 7 0x000000000062a6ce in gorm.io/gorm/schema.(*Field).setupValuerAndSetter.func9
- at D:/user/go/pkg/mod/gorm.io/gorm@v1.21.15/schema/field.go:570
- 8 0x000000000062be10 in gorm.io/gorm/schema.(*Field).setupValuerAndSetter.func7
- at D:/user/go/pkg/mod/gorm.io/gorm@v1.21.15/schema/field.go:517
- 9 0x000000000062b00d in gorm.io/gorm/schema.(*Field).setupValuerAndSetter.func9
- at D:/user/go/pkg/mod/gorm.io/gorm@v1.21.15/schema/field.go:614
- 10 0x000000000062be10 in gorm.io/gorm/schema.(*Field).setupValuerAndSetter.func7
- at D:/user/go/pkg/mod/gorm.io/gorm@v1.21.15/schema/field.go:517
- 11 0x000000000062b00d in gorm.io/gorm/schema.(*Field).setupValuerAndSetter.func9
- at D:/user/go/pkg/mod/gorm.io/gorm@v1.21.15/schema/field.go:614
- 12 0x0000000000668af9 in gorm.io/gorm.Scan
- at D:/user/go/pkg/mod/gorm.io/gorm@v1.21.15/scan.go:181
- 13 0x0000000000693615 in gorm.io/gorm/callbacks.Query
- at D:/user/go/pkg/mod/gorm.io/gorm@v1.21.15/callbacks/query.go:25
- 14 0x000000000064f073 in gorm.io/gorm.(*processor).Execute
- at D:/user/go/pkg/mod/gorm.io/gorm@v1.21.15/callbacks.go:130
- 15 0x00000000006588b4 in gorm.io/gorm.(*DB).Find
- at D:/user/go/pkg/mod/gorm.io/gorm@v1.21.15/finisher_api.go:166
- 16 0x00000000006a694b in dev.iec.com.ru/febest/msaccess.TestSelectComplex
- at D:/user/msaccess/msaccess_test.go:461
- 17 0x00000000005570bb in testing.tRunner
- at D:/Program Files/Go/src/testing/testing.go:1259
- 18 0x0000000000558679 in testing.(*T).Run·dwrap·21
- at D:/Program Files/Go/src/testing/testing.go:1306
- если заменить на preload
- db.Debug().
- Preload("Suppliers").
- Preload("Categories").
- Find(&products, "[Products].[SupplierID] IN ?", []int32{3, 4})
- генерируются запросы
- SELECT * FROM [categories] WHERE [categories].[CategoryID] IN (6,7,8,9,10,74)
- SELECT * FROM [suppliers] WHERE [suppliers].[SupplierID] IN (6,7,8,9,10,74)
- SELECT * FROM [products] WHERE [Products].[SupplierID] IN (3,4)
- всё работает, в консоль уходят нормальные данные
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement