[英]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.