2017-06-27 15 views
0

に私は私が二つのテーブルordersorder_detailsLaravel - 挿入JSON配列データのデータベース

ordersテーブルに挿入する必要があり、携帯端からくるJSONデータは、単一のエントリとorder_detailsテーブルを持っているjson object

の配列を持っています
{ 
    "id": 1, 
    "user_id": "1", 
    "delivery_boy_id": "3", 
    "address_type": "home", 
    "address": "Address of the customer", 
    "landmark": "Near Address", 
    "city": "Mangalore", 
    "state": "Karnataka", 
    "pincode": "575002", 
    "delivery_time_slot": "9am to 11am", 
    "delivery_date": "23-7-2017", 
    "promo_code_applied": "no", 
    "payment_type": "cod", 
    "transaction_details": null, 
    "total": "580", 
    "signature": null, 
    "status": "delivered", 
    "comment": null, 
    "created_at": "2017-06-22 01:05:16", 
    "updated_at": "2017-06-22 01:05:16", 
    "order_details": [ 
     { 
      "id": 1, 
      "product_id": "1", 
      "quantity": 2, 
      "created_at": "2017-06-22 01:05:16", 
      "updated_at": "2017-06-22 01:05:16" 
     }, 
     { 
      "id": 2, 
      "product_id": "2", 
      "quantity": 3, 
      "created_at": "2017-06-22 01:05:16", 
      "updated_at": "2017-06-22 01:05:16" 
     } 
    ] 
} 

私はordersテーブルにデータを保存することができるよ、と私は(保存ORDER_IDを追加)を変更し、order_detailsテーブルにorder_detailsデータを保存したい

public function placeOrder(Request $request) 
{ 
    $order = new Order; 

    $order->outlet_id = $request->outlet_id; 
    $order->user_id = $request->user_id; 
    $order->delivery_boy_id = $request->delivery_boy_id; 
    $order->address_type = $request->address_type; 
    $order->address = $request->address; 
    $order->landmark = $request->landmark; 
    $order->city = $request->city; 
    $order->state = $request->state; 
    $order->pincode = $request->pincode; 
    $order->delivery_time_slot = $request->delivery_time_slot; 
    $order->delivery_date = $request->delivery_date; 
    $order->promo_code_applied = $request->promo_code_applied; 
    $order->payment_type = $request->payment_type; 
    $order->transaction_details = $request->transaction_details; 
    $order->total = $request->total; 
    $order->signature = $request->signature; 
    $order->status = $request->status; 
    $order->comment = $request->comment; 
    $order->save(); 

    //loop through the order_details array from above JSON 
    //add the above saved order_id to order_details 
    //save the orers_details array in order_details table 

    foreach ($request->order_details as $key => $order_detail) { 

     $details = new OrderDetail; 

     $details->order_id = $order->id; 
     $details->product_id = $order_detail->product_id; //line 43 
     $details->quantity = $order_detail->quantity; 
     $details->save(); 

    } 

    return Response::json([ 
     'data' => $order->id 
    ]); 
} 

私は次のエラーを取得しています

(1/1) ErrorException 
Trying to get property of non-object 
in OrderController.php (line 43) 

ありがとう

+0

どの行が43ですか? –

+0

@Alex Howanskyさん、ありがとうございました。私は '$ details-> product_id = $ order_detail-> product_id; // line 43' –

+0

ああ、それを逃した... –

答えて

1

使用、使用して、通常の配列の値にアクセスしようとしているときにこの問題が発生した

$details->product_id = $order_detail['product_id'] 
$details->quantity =$order_detail['quantity']; 

- >演算子を。

+0

ありがとうございました。本当にありがとうございました。 –

+0

私はなぜ - >演算子を使用しているのか知りたいです。 –

+1

@MrRobot $ order_detailは配列でオブジェクトではないためです。 – Bhavyanshu

関連する問題