【发布时间】:2021-03-20 01:12:38
【问题描述】:
我有这样的 Json 数据:
$data = '[
{
"OrderId": "1038806370",
"qtty": "1",
"Item": "Strawberry 250 gr",
"SKU": "20091"
},
{
"OrderId": "1038806370",
"qtty": "2",
"Item": "Strawberry 130 gr",
"SKU": "20092"
},
{
"OrderId": "1038806370",
"qtty": "1",
"Item": "Strawberry 130 gr",
"SKU": "20092"
}
]';
我想使用 PHP Laravel 将 MySql 保存在我的数据库中,...
我想将数据从 json 保存到我的表中,有表 Order 值 [orderID,...] 和 OrderDetail 值 [orderID, SKU, Qty]
这是我在控制器中的代码
$order = json_decode($data, true);
foreach ($order as $ord) {
$check = Order::where('orderid', $ord['OrderId'])->get();
if (count($data) > 0) {
OrderDetail::firstOrCreate([
'order_id' => $ord['OrderId'],
'sku_id' => $ord['SKU'],
'qty' => $ord['qtty']
]);
} else {
Order::create([
'orderid'=> $ord['OrderId'],
]);
OrderDetail::firstOrCreate([
'order_id' => $ord['OrderId'],
'sku_id' => $ord['SKU'],
'qty' => $ord['qtty']
]);
}
}
但我没有得到我想要的,我得到 QTY 的 SKU 20091 是 2 但实际的 json 数据是 3
【问题讨论】:
-
您的 $data 缺少数组括号:
[{...},{...}] -
保存数据怎么样? @MaartenVeerman
-
你检查
$data的计数,你应该检查$check的计数