【发布时间】:2021-12-26 09:48:16
【问题描述】:
我对 GORM 映射有一个奇怪的问题,我有两个如下所示的结构。
type ParcelOrder struct {
gorm.Model
ID int `json:"id"`
SenderId uint `json:"sender_id"`
OrderID string `json:"order_id"`
PickupAddress string `json:"pickup_address"`
DeliveryAddress string `json:"delivery_address"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
DeletedAt sql.NullTime `json:"deleted_at"`
ParcelOrderDetails ParcelOrderDetails `gorm:"foreignKey:ParcelOrderID"`
}
type ParcelOrderDetails struct {
gorm.Model
ID int `json:"id"`
BikerID sql.NullInt32 `json:"biker_id"`
ParcelOrderID int `json:"parcel_order_id"`
PickupTime sql.NullTime `json:"pickup_time"`
DeliveryTime sql.NullTime `json:"delivery_time"`
Status int `json:"status"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
DeletedAt sql.NullTime `json:"deleted_at"`
}
我正在使用 Mysql DB,当我尝试创建订单时,它没有在第二个表上创建条目。 对于创建,我使用以下代码
order := ParcelOrder{
DeliveryAddress: pickupdata.DeliveryAddress,
PickupAddress: pickupdata.PickupAddress,
OrderID: GetUniqueID(),
SenderId: userId,
ParcelOrderDetails: ParcelOrderDetails{
Status: 0,
},
}
connection.Create(&order)
另外,当我尝试从表中获取数据时,我收到如下错误
SELECT `parcel_orders`.`id`,`parcel_orders`.`created_at`,`parcel_orders`.`updated_at`,`parcel_orders`.`deleted_at`,`parcel_orders`.`sender_id`,`parcel_orders`.`order_id`,`parcel_orders`.`pickup_address`,`parcel_orders`.`delivery_address`,`ParcelOrderDetails`.`id` AS `ParcelOrderDetails__id`,`ParcelOrderDetails`.`created_at` AS `ParcelOrderDetails__created_at`,`ParcelOrderDetails`.`updated_at` AS `ParcelOrderDetails__updated_at`,`ParcelOrderDetails`.`deleted_at` AS `ParcelOrderDetails__deleted_at`,`ParcelOrderDetails`.`biker_id` AS `ParcelOrderDetails__biker_id`,`ParcelOrderDetails`.`parcel_order_id` AS `ParcelOrderDetails__parcel_order_id`,`ParcelOrderDetails`.`pickup_time` AS `ParcelOrderDetails__pickup_time`,`ParcelOrderDetails`.`delivery_time` AS `ParcelOrderDetails__delivery_time`,`ParcelOrderDetails`.`status` AS `ParcelOrderDetails__status` FROM `parcel_orders` ParcelOrder LEFT JOIN `parcel_order_details` `ParcelOrderDetails` ON `parcel_orders`.`id` = `ParcelOrderDetails`.`parcel_order_id` WHERE ParcelOrder.sender_id = 2
我的获取代码如下所示。提取问题很奇怪,因为别名被分配为ParcelOrder,所以没有用该名称标识的字段,而是仍然使用parcel_orders 实际表名
db.Joins("ParcelOrder").Joins("ParcelOrderDetails").Where("ParcelOrder.sender_id = ?", userId).Find(&order)
数据库不是用 Go 应用程序创建的,而是用 Laravel 应用程序创建的。我正在尝试向该数据库读取/写入数据。
有什么想法吗?
【问题讨论】: