2017-02-05 2 views
0

Я хочу опубликовать данные из Frontend в базу данных MYSQL в бэкэнд, используя API Laravel. Я попробовал следующий код, но он выдает 500: Internal Server Error при попытке опубликовать.Laravel: Как сохранить объект JSON в базе данных MYSQL?

public function postOrder(Request $request) 
{ 
    /* 
    $request is a JSON Object which looks like 
    {"order":{"table_id":2,"food_id":4,"status":1}} 
    */ 

    $order = new Order(); 
    $order->table_id = $request->order->table_id; 
    $order->food_id = $request->food_id; 
    $order->user_id = $request->user_id; 
    $order->status = $request->status; 
    $order->save(); 

    return response()->json(['message' => 'Order Added'], 201); 
} 

Должно ли я json_decode($request)? Как?

Когда я error_log($request), вот что я получаю:

Accept:   */* 
Accept-Encoding: gzip, deflate, br 
Accept-Language: en-US,en;q=0.8 
Connection:  keep-alive 
Content-Length: 60 
Content-Type: application/json 
Host:   localhost:8000 
Origin:   http://localhost:8100 
Referer:   http://localhost:8100/ 
User-Agent:  Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML 
, like Gecko) Chrome/55.0.2883.87 Safari/537.36 
X-Xsrf-Token: eyJpdiI6IlJpNVV1ejhZTDVaSnVcL09lVkFIZER3PT0iLCJ2YWx1ZSI6IjNFK0 
NnSXFsczd1eGJBRjZiZFc3U3lBUE9jR1lNZ0hSN0ZWNVpyWHlyWGE1TVZvZW9vK1F0eExXVjdkQzdPS 
nBISEM3UXBINGQxZ09jTCttQ0huYmlnPT0iLCJtYWMiOiJmZWNiMTY1NTJjNjYyNDZjM2Q3YTE2N2Jl 
NWNmYjgwYmNiMTlkNThjYWQ2NjEyYjk3YzQ4ZTVkYjQwMzFjY2VlIn0= 

{"order":{"table_id":2,"food_id":4,"time":"333","status":1}} 
+0

Возможный дубликат [Laravel: Как хранить данные в формате JSON в базе данных] (http://stackoverflow.com/questions/37803214/laravel-how-to-store-json-format-data-in -database) – manniL

+0

Вопрос не имеет надлежащего решения этой проблемы. – anonym

+0

О, да. вы правы, мне очень жаль! Gimme a sec – manniL

ответ

1

, что может быть решение:

json_decode($request, true)['order']['table_id'] 
2

Вы должны использовать json_decode(), чтобы получить ассоциативный массив:

$json = '{"order":{"table_id":2,"food_id":4,"time":"333","status":1}}'; 

$array = json_decode($json, true); 

var_dump($array['order']); //Here you can see that it is an associative array with the needed values now 

Тогда вы можете cr на основе этой модели.

$order = Order::create($array['order']); 
+0

@anonym Помогло ли это? – manniL

Смежные вопросы