我正在使用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。
答案 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);