Laravel 5.4-如何从服务器接收JSON数据并保存在数据库中

时间:2017-06-07 00:52:26

标签: php json database web-services laravel-5.4

我正在使用webservices。我的要求是从服务器接收JSON数据并存储在DB [order table]中。客户用于在移动设备中放置多个订单。同样必须在laravel控制器中接收并存储在订单表中。我不应该仅使用表单通过控制器我应该收到数据。 我是webservices和JSON概念的新手。

public function receive(Request $request)
{       
    $data = $request->json()->all();
    $order = new order();
    $order->product_int = $request->input('products');
    $order->quantity_float = $request->input('quantity');
    $order->amount_float = $request->input('amount');       
    $order->save();        
}

在api.php中,我正在呼叫Route::get('/receive', 'OrderController@receive'); 上面的代码不起作用。如何接收JSON数据作为函数参数以及如何保存到DB。

1 个答案:

答案 0 :(得分:3)

你应该使用Laravel中的Input :: all方法接收一个关联数组,如下所示

public function receive(Request $request)
{       
   $data = Input::all(); //$data = $request->json()->all(); should also work
   $order = new order();
   $order->product_int = $data['products'];
   $order->quantity_float = $data['quantity'];
   $order->amount_float = $data['amount'];       
   $order->save();        
}

可能,您可能希望更改路线而不是获取,

Route::post('/receive', 'OrderController@receive'); 

如果您不想提交表单,那么您可以使用CURL将数据发布到您的API,

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"YOUR-API-URL-HERE");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('products' => $value, 'quantity' => $quantity, 'amount' => $amount)));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec ($ch);
curl_close ($ch);