【发布时间】:2021-01-08 14:15:42
【问题描述】:
我正在从我试图将数据保存到数据库的表单中接收数据。
在保存第一条记录时会保存多次。
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 Controller 中运行 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"}]
【问题讨论】:
-
您只获得第一个 ID,因为您在 foreach 中返回。您是否尝试过移动 return 语句?
-
不要在循环内返回,它只会在第一次运行时打破循环
-
用 foreach 之外的结果更新了问题
标签: arrays json laravel arraylist eloquent