我正在使用Laravel构建API。
在此API中,我使用两个模型,Order
模型和Product
模型。
一个订单可以有很多产品。为了建立这种关系,我制作了3张桌子。
以下是表格:
Field Type
id INT
user_id INT
created_at TIMESTAMP
updated_at TIMESTAMP
Field Type
id INT
name VARCHAR
price DECIMAL
created_at TIMESTAMP
updated_at TIMESTAMP
Field Type
id INT
order_id INT
product_id INT
quantity INT
created_at TIMESTAMP
updated_at TIMESTAMP
问题是,如果API客户端具有订单页面(或者您可以说购物车页面),则当用户提交购物车表单时,客户端会将多个订单商品(产品)发布到服务器,知道这一点,
答案 0 :(得分:2)
所以根据您的问题。 以下json将起作用。 json内将有一个订单数组,它将具有多个订单,如下所示:
{
"user_id": 1
"orders": [
{"product_name": "Whatever1 is selected", "quantity": 1},
{"product_name": "Whatever2 is selected", "quantity": 2},
{"product_name": "Whatever3 is selected", "quantity": 3},
],
}
然后在服务器端:
public function store(Request $request)
{
// after validating this you can use foreach to parse the the json
foreach($request->orders as order)
{
//suposse you have orders table which has user id
Order::create([
"product_name" => $order['product_name'],
"quantity" => $order['quantity'],
"user_id" => $request->user_id // since this is just json object not an jsonarray
]);
}
}
如果您正在使用Laravel Passport,则无需在json中指定user_id。在这种情况下,您的json就像:
{
"orders": [
{"product_name": "Whatever1 is selected", "quantity": 1},
{"product_name": "Whatever2 is selected", "quantity": 2},
{"product_name": "Whatever3 is selected", "quantity": 3},
],
}
然后在控制器的服务器端:
public function store(Request $request)
{
// after validating this you can use foreach to parse the the json
foreach($request->orders as order)
{
//suposse you have orders table which has user id
Order::create([
"product_name" => $order['product_name'],
"quantity" => $order['quantity'],
"user_id" => Auth::id() // since you are using passport
]);
}
}
在api.php文件内部进行路由:
Route::post('user/order','OrderController@store');
// if using Laravel Passport
Route::post('user/order','OrderController@store')->middleware('auth:api');
这是如何使用护照而不使用护照包裹将同一用户的多个订单存储在json中的方法。
注意:您可以根据自己的设计更改json键名。 这只是一个示例,让您了解如何使用它。
答案 1 :(得分:1)
当涉及带有产品API的订单时,我总是问自己:“ Shopify会做什么?” (WWSD)
此链接记录了他们的订单api,并向您展示了如何在json中发布带有商品的订单以及返回的json响应。
https://help.shopify.com/en/api/reference/orders/order#create
该页面还包含关闭,取消,更新,删除等示例。
但是请注意,除了Order和Product之外,API后面还有很多表正在更新。
答案 2 :(得分:0)
这是我的做法。
def lab_print ():
row_value = 5
for i in month_list: #iterating through the list, creating label
row_value = row_value + 1
iLabel = Label(akhilGui, text= str(i),
fg="#113B53",font = "Helvetica 12 bold ", justify='right')
lab_list.append(iLabel)
iLabel.grid(row = row_value, column=0, pady=2, padx=15, sticky= W)