如何从laravel中的api主体获取属性?

3 database laravel eloquent laravel-5

我正在使用 API Body 发送对象 现在我需要从该对象获取一个属性,并且我还需要修改对象中的该属性,如何执行此操作。

\n

这是我的 Laravel 控制器功能

\n
 public function advanceOrder(Request $request)\n    {\n        try{\n            $result = $request->getContent();\n         DB::table('advance_orders')->insert(['data'=> $result]);\n        }catch(Exception $e)\n        {\n            DB::table('advance_orders')->insert(['data'=> $e->getMessage()]);\n        }\n    }\n
Run Code Online (Sandbox Code Playgroud)\n

这是我从 api 获取的对象\n我想从对象获取 payment_datetime 属性,并且还想修改该对象中的属性

\n
{"paymethod_id":1,"business_id":76,"delivery_type":1,"driver_tip":0,"delivery_zone_id":6569,"delivery_datetime":"2020-12-09 00:23:00","location":{"lat":18.7675049,"lng":-103.1445221},"deliveryOptionmodal":{"id":2,"value":"Esperar en la entrada","$$hashKey":"object:701"},"delivery_cost_new":20,"products":"[{\\"id\\":48732,\\"code\\":\\"NLNyEp\\",\\"quantity\\":1,\\"options\\":[],\\"ingredients\\":[]}]","customer_id":129731,"customer":"{\\"id\\":129731,\\"name\\":\\"bil\\",\\"middle_name\\":null,\\"lastname\\":\\"ar\\",\\"second_lastname\\":null,\\"photo\\":null,\\"email\\":\\"bilal1212@gmail.com\\",\\"cellphone\\":\\"0213123132131\\",\\"address\\":\\"Coalcom\xc3\xa1n, Michoac\xc3\xa1n, Mexico\\",\\"location\\":\\"{\\\\\\"lat\\\\\\":18.7675049,\\\\\\"lng\\\\\\":-103.1445221}\\",\\"internal_number\\":null,\\"address_notes\\":\\"sss\\",\\"zipcode\\":null,\\"map_data\\":{\\"library\\":\\"google\\",\\"place_id\\":\\"ChIJz6WGrUw-MIQR_jYIoFZ-RPM\\"},\\"tag\\":\\"home\\"}"}\n
Run Code Online (Sandbox Code Playgroud)\n

小智 6

您需要首先反序列化您的对象,因为该getContent()方法返回一个字符串。就用json_decode()方法吧。

$result = json_decode($request->getContent(), true);
Run Code Online (Sandbox Code Playgroud)

从现在开始,您可以使用 JSON 对象中的数据作为数组字段。

dd($result['delivery_datetime']);
Run Code Online (Sandbox Code Playgroud)

如果需要持久保存 JSON 对象,您还可以修改数据并再次序列化。

$result = json_decode($request->getContent(), true);
$result['driver_tip'] = 50;
$modifiedResult = json_encode($result);
dd($modifiedResult);
Run Code Online (Sandbox Code Playgroud)