Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 只有JSON中的第一个值保存到数据库-Laravel_Arrays_Json_Laravel_Arraylist_Eloquent - Fatal编程技术网

Arrays 只有JSON中的第一个值保存到数据库-Laravel

Arrays 只有JSON中的第一个值保存到数据库-Laravel,arrays,json,laravel,arraylist,eloquent,Arrays,Json,Laravel,Arraylist,Eloquent,我从一个表单接收数据,我试图将数据保存到数据库中 保存时,第一条记录被保存多次 return response()->json($request->all()); JSON { "product_combo_name":"asdfadsf", "product_values":"[{\"product_data\":{\"id\":1,\"slug\&

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

保存时,第一条记录被保存多次

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_数据保存为单个值,但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"
电荷分离的行为也一样。不确定如何中断此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));

您只能获得第一个ID,因为您将在foreach内返回。你试过移动return语句吗?不要在循环内返回,它只会在第一次运行时中断循环。用foreach之外的结果更新问题