只有JSON中的第一个值保存到Database-Laravel



我正在从一个表单接收数据,我正试图将数据保存到数据库中。

保存时,会多次保存第一条记录。

return response()->json($request->all());

JSON

{
"product_combo_name":"asdfadsf",
"product_values":"[{"product_data":{"id":1,"slug":"product-name","sku":"product-code","product_name":"Product Name","category_id":1,"subcategory_id":1,"previewImg":"http://localhost/EcommerceBackend/public//assets/images/product/thumb/Product Name.jpeg","hasVariants":false,"deleted_at":null,"created_at":"2020-09-17T07:17:42.000000Z","updated_at":"2020-09-17T10:54:24.000000Z"},"product_qty":"1","product_price":"100","product_tax":"18","hsn_code":"78877","product_line_total":"118.00"},{"product_data":{"id":1,"slug":"product-name","sku":"product-code","product_name":"Product Name","category_id":1,"subcategory_id":1,"previewImg":"http://localhost/EcommerceBackend/public//assets/images/product/thumb/Product Name.jpeg","hasVariants":false,"deleted_at":null,"created_at":"2020-09-17T07:17:42.000000Z","updated_at":"2020-09-17T10:54:24.000000Z"},"product_qty":"1","product_price":"100","product_tax":"18","hsn_code":"197797","product_line_total":"118.00"}]",
"shipping_charges":"123",
"total_price":"359.00",
"combo_total_price":"124.18",
"product_total_price":"236.00",
"charge_breakup":"[{"name":"qty","qty":"1","per_unit_price":"1","tax":"18","tax_amount":"0.18","line_total_amount":"1.18"}]"
}

我试图将product_data保存为单个值,但JSON对我来说似乎有点复杂。

当我在Laravel控制器中运行foreach时,只返回第一个对象,

foreach (json_decode($request->product_values) as $key => $value) {
# code...
Product::insert([
'product_id' => $value->id,
]);
return response()->json(json_encode($value->product_data->id));
}
Response : "1"

charge_breakup的行为相同。不确定如何破坏此JSON响应。

编辑1:

$value = json_decode($request->product_values);
return response()->json($value);

Json回应:

[{"product_data":{"id":1,"slug":"product-name","sku":"product-code","product_name":"Product Name","category_id":1,"subcategory_id":1,"previewImg":"http://localhost/EcommerceBackend/public//assets/images/product/thumb/Product Name.jpeg","hasVariants":false,"deleted_at":null,"created_at":"2020-09-17T07:17:42.000000Z","updated_at":"2020-09-17T10:54:24.000000Z"},"product_qty":"1","product_price":"100","product_tax":"18","hsn_code":"78877","product_line_total":"118.00"},{"product_data":{"id":1,"slug":"product-name","sku":"product-code","product_name":"Product Name","category_id":1,"subcategory_id":1,"previewImg":"http://localhost/EcommerceBackend/public//assets/images/product/thumb/Product Name.jpeg","hasVariants":false,"deleted_at":null,"created_at":"2020-09-17T07:17:42.000000Z","updated_at":"2020-09-17T10:54:24.000000Z"},"product_qty":"1","product_price":"100","product_tax":"18","hsn_code":"197797","product_line_total":"118.00"}]

您之所以只似乎得到一个项目,是因为您返回到foreach内部。

foreach (json_decode($request->product_values) as $key => $value) {
# code...
Product::insert([
'product_id' => $value->id,
]);
return response()->json(json_encode($value->product_data->id));
}

我不确定你想在这里实现什么,但要获得一个id的集合:

$ids = array();
foreach (json_decode($request->product_values) as $key => $value) {
# code...
Product::insert([
'product_id' => $value->id,
]);
array_push($ids, json_encode($value->product_data->id));
}
return response()->json(collect($ids));

最新更新