arrayslaravel

I am getting array data from api response. I want to save this data to my database using laravel


Here is the response data

array:3 [▼ // app\Http\Controllers\DataSend.php:38
  "status" => 200
  "message" => "Consignment has been created successfully."
  "consignment" => array:11 [▼
    "consignment_id" => 139732775
    "invoice" => "fddf51213"
    "tracking_code" => "854272742CC"
    "recipient_name" => "APi Test"
    "recipient_phone" => "01900110011"
    "recipient_address" => "address is here"
    "cod_amount" => 1
    "status" => "in_review"
    "note" => "Handle with care"
    "created_at" => "2025-04-21T05:53:11.000000Z"
    "updated_at" => "2025-04-21T05:53:11.000000Z"
  ]
]

I want to insert this data to my database.

all data in $responses variable

foreach ($responses as $response) {
    $curDatains = new CurrierData();
    $curDatains->orderId = 1;
    $curDatains->orderInvoice = $response->invoice;
    $curDatains->consignment_id = $response->consignment_id;
    $curDatains->tracking_code = $response->tracking_code;
    $curDatains->status = $response->status;
    $curDatains->save();
}

in my code I face the error

Attempt to read property "invoice" on int


Solution

  • please try the below code if it works for you. I have tried with you above data.

    $consignment = $responses['consignment'];
        
    $curDatains = new stdClass(); //you can use your own $curDatains = new CurrierData(); here
    $curDatains->orderId = 1;
    $curDatains->orderInvoice = $consignment['invoice'];
    $curDatains->consignment_id = $consignment['consignment_id'];
    $curDatains->tracking_code = $consignment['tracking_code'];
    $curDatains->status = $consignment['status'];
    //use.  $curDatains->save();
    print_r($curDatains);
    
    Result
    stdClass Object
    (
        [orderId] => 1
        [orderInvoice] => fddf51213
        [consignment_id] => 139732775
        [tracking_code] => 854272742CC
        [status] => in_review
    )