mogutouERP
mogutouERP copied to clipboard
Gorm选择与字段冲突
2022/10/26 20:26:18 D:/golang/data/src/mogutouERP/mogutouERP/models/purchaseOrder.go:162 [error] invalid field found for struct github.com/Allenxuxu/mogutouERP/models.PurchaseOrderInfo's field Goods, need to define a valid foreign key for relations or it need to implement the Valuer/Scanner interface
func getPurchaseOrder(tx *gorm.DB, orderID string) (*PurchaseOrderInfo, error) {
var order PurchaseOrderInfo
err := tx.Table("purchase_orders").Select(
"id, created_at, operator, amount, remarks, state, freight").Where("id = ?", orderID).First(&order).Error
if err != nil {
return nil, err
}
err = tx.Raw(`select t2.id, t2.name, t2.colour, t2.size, t2.brand, t1.number from purchase_goods as t1 left outer join
commodities as t2 on t1.goods_id = t2.id where t1.purchase_order_id = ?`, orderID).Scan(&order.Goods).Error
if err != nil {
return nil, err
}
return &order, nil
}
order 的数据结构是:
type PurchaseOrderInfo struct {
PurchaseOrder
Goods []Commodity
}
type PurchaseOrder struct {
gorm.Model
Operator string `gorm:"size:255"`
Remarks string
Amount float32
Freight float32
State string `gorm:"default:'未完成'"`
}
// Commodity 商品表
type Commodity struct {
ID string `gorm:"primary_key"`
Name string
Colour string
Size string
Brand string
Number uint
PresaleNumber uint
SalesVolume uint
Price float32
PurchasePrice float32
}
2022/10/26 20:41:47 D:/golang/data/src/mogutouERP/mogutouERP/models/custormerOrder.go:223 [error] invalid field found for struct github.com/Allenxuxu/mogutouERP/models.CustormerOrderInfo's field Goods, need to define a valid foreign key for relations or it need to implement the Valuer/Scanner interface
客户订单和采购订单都有这个bug 要是有时间指点 后期会积极提供PR
2022/10/26 20:41:47 D:/golang/data/src/mogutouERP/mogutouERP/models/custormerOrder.go:223 [error] invalid field found for struct github.com/Allenxuxu/mogutouERP/models.CustormerOrderInfo's field Goods, need to define a valid foreign key for relations or it need to implement the Valuer/Scanner interface
客户订单和采购订单都有这个bug 要是有时间指点 后期会积极提供PR
可以直接先把外键删除了,很早之前写的代码了,外键的逻辑可以由代码来控制。
https://github.com/gebilxs/ERP/commit/b8589ab2447894a2ea51d869ffa017466bf1f63a 提交的一些修改