簡體   English   中英

Laravel 遍歷關聯數組然后保存到數據庫

[英]Laravel loop through associative array then save to database

我是初學者,目前正在學習 Vue js 和 Laravel。 所以我想弄清楚如何通過 axios 創建單個 POST 請求,然后將多個條目插入到我的數據庫中。

例如,我有這個數組:

{
  "comakers": [
    {
      "name": "Sample",
      "email": "sample@email.com"
    },
    {
      "name": "Test",
      "email": "test@email.com"
    }
  ]
}

然后在我的 Laravel 控制器上我想做一個像這樣的 foreach 循環

public function update(Request $request, $id)
{
    $data = $request->all();

    foreach ($data as $comaker){
        $nominate = new Nominate();
        $nominate->loan_application_id = $id;
        $nominate->comaker_name = $comaker->name;
        $nominate->comaker_email = $comaker->email;

        $nominate->save();
    }

}

但是我收到一個錯誤“試圖獲取非對象的屬性‘名稱’” 有人可以給我一些關於如何實現這一目標的想法嗎?

順便說一句,我正在嘗試使用控制器的更新功能。 基本上,我想(如果不存在則插入新的)或(當存在現有數據時進行編輯)。 我在這里做的是正確的方法嗎?

(更新)

當我嘗試獲取$data = $request->all();的值時,laravel dd 或 dump 會顯示這一點$data = $request->all();

array:1 [
  "comakers" => array:2 [
    0 => array:2 [
      "name" => "Sample"
      "email" => "sample@email.com"
    ]
    1 => array:2 [
      "name" => "Test"
      "email" => "test@email.com"
    ]
  ]
]

我不認為all()會返回一個對象數組,而是一個關聯數組。 因此,您可以嘗試以下操作:

// Notice that you should use `json()` since the data is in json format
$data = $request->json()->all();

foreach ($data['comakers'] as $comaker) {
  $nominate = new Nominate();
  $nominate->loan_application_id = $id;
  $nominate->comaker_name = $comaker['name'];
  $nominate->comaker_email = $comaker['email'];

  $nominate->save();
}

當然,您也可以將結果轉換為這樣的對象:

foreach ($data['comakers'] as $item) {
  $comaker = (object) $item;
  $nominate = new Nominate($data);
  ...

我還建議您簡單地打印出結果的內容,以查看它實際包含的內容,例如使用var_dump()

var_dump($data);

當您嘗試循環時,您忘記了comaker鍵,您應該這樣做

$data = $request->all();

foreach ($data['comakers'] as $comaker){
    $nominate = new Nominate();
    $nominate->loan_application_id = $id;
    $nominate->comaker_name = $comaker['name'];
    $nominate->comaker_email = $comaker['email'];

    $nominate->save();
}

我認為您在 Json 變量上執行 foreach 而不是其中的 comakers 對象。

foreach ($data->comakers as $comaker) {
        $nominate = new Nominate();
        $nominate->loan_application_id = $id;
        $nominate->comaker_name = $comaker->name;
        $nominate->comaker_email = $comaker->email;

        $nominate->save();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM