英文:
One to many inserting
问题
人们通常如何处理这种情况?是否有一种快速使用sqlboiler的方法来实现这个需求?
在处理这种情况时,人们通常会执行以下步骤:
- 解析请求中的JSON数据,获取订单和订单项的信息。
- 首先,将订单信息插入到数据库中,并获取生成的订单ID。
- 然后,使用订单ID将每个订单项与订单关联起来,并将订单项插入到数据库中。
使用sqlboiler可以简化这个过程。你可以按照以下步骤进行操作:
- 根据Order和OrderItem的结构体定义,使用sqlboiler生成相应的模型代码。
- 解析请求中的JSON数据,将其映射到Order和OrderItem的结构体对象中。
- 首先,使用sqlboiler的Create方法将订单信息插入到数据库中。
- 获取生成的订单ID。
- 遍历订单项列表,为每个订单项设置订单ID,并使用sqlboiler的Create方法将订单项插入到数据库中。
这样,你就可以通过一次请求将订单和订单项的信息插入到数据库中了。
英文:
I have two models: Order
and OrderItem
. I need to insert order and item of it from same request, e.g.:
{
"user_id": "1",
"total_price": "200",
"items": [
{
"product_id": 1,
"quantity": 10
},
{
"product_id": 2,
"quantity": 5
},
{
"product_id": 3,
"quantity":3
}
]
}
This is Order and OrderItem model
=========================== Order ===========================
type Order struct {
ID int `boil:"id" json:"id" toml:"id" yaml:"id"`
OrderNumber string `boil:"order_number" json:"order_number" toml:"order_number" yaml:"order_number"`
OrderDate time.Time `boil:"order_date" json:"order_date" toml:"order_date" yaml:"order_date"`
Status string `boil:"status" json:"status" toml:"status" yaml:"status"`
Note string `boil:"note" json:"note" toml:"note" yaml:"note"`
UserID int `boil:"user_id" json:"user_id" toml:"user_id" yaml:"user_id"`
CreatedAt time.Time `boil:"created_at" json:"created_at" toml:"created_at" yaml:"created_at"`
UpdatedAt time.Time `boil:"updated_at" json:"updated_at" toml:"updated_at" yaml:"updated_at"`
R *orderR `boil:"-" json:"-" toml:"-" yaml:"-"`
L orderL `boil:"-" json:"-" toml:"-" yaml:"-"`
}
=========================== OrderItem ===========================
type OrderItem struct {
ID int `boil:"id" json:"id" toml:"id" yaml:"id"`
OrderID int `boil:"order_id" json:"order_id" toml:"order_id" yaml:"order_id"`
ProductID int `boil:"product_id" json:"product_id" toml:"product_id" yaml:"product_id"`
ProductPrice float64 `boil:"product_price" json:"product_price" toml:"product_price" yaml:"product_price"`
ProductName string `boil:"product_name" json:"product_name" toml:"product_name" yaml:"product_name"`
Quantity int `boil:"quantity" json:"quantity" toml:"quantity" yaml:"quantity"`
Discount float64 `boil:"discount" json:"discount" toml:"discount" yaml:"discount"`
Note string `boil:"note" json:"note" toml:"note" yaml:"note"`
CreatedAt time.Time `boil:"created_at" json:"created_at" toml:"created_at" yaml:"created_at"`
UpdatedAt time.Time `boil:"updated_at" json:"updated_at" toml:"updated_at" yaml:"updated_at"`
R *orderItemR `boil:"-" json:"-" toml:"-" yaml:"-"`
L orderItemL `boil:"-" json:"-" toml:"-" yaml:"-"`
}
What do people usually do? Is there a way to do this quickly with sqlboiler?
答案1
得分: 2
我认为你不需要这样做,你可以将订单模型和订单项模型分别插入不同的请求中。这种解决方案为客户提供了更多的选择。如果你需要更新或添加新的订单项到订单中,你也需要使用这个API来解决。
英文:
I think you needn't to do that, you can insert order model and orderItems model in different requests. This solution provide more option than for client. If you need to update or add new order item into the order, you also need this API to solve it.
答案2
得分: 1
创建一些模型,如下所示:
type OrderItemInput struct {
ProductId int `json:"product_id"`
Quantity int `json:"quantity"`
}
type OrderInsertInput struct {
UserID int `json:"user_id"`
TotalPrice float64 `json:"total_price"`
Items []OrderItemInput `json:"items"`
}
通过OrderInsertInput的字段UserId
和TotalPrice
创建新的订单。
当有OrderID
时,我们将使用每个OrderItemInput
和OrderID
创建OrderItem
。
英文:
Create some models like
type OrderItemInput struct {
ProductId int `json:"product_id"`
Quantity int `json:"quantity"`
}
type OrderInsertInput struct {
UserID int `json:"user_id"`
TotalPrice float64 `json:"total_price"`
Items []OrderItemInput `json:"items"`
}
Create new Order by fields UserId
and TotalPrice
of OrderInsertInput.
When there was OrderID
, we will create OrderItem
with each OrderItemInput
and the OrderID
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论