1
下面是我的表的概述。更新行,列值表示爲鍵
事情是,meta_key
列的值表示爲按鍵。
問題是,我如何更新與user_id
的字段。例如,我想更新具有不同值的每個字段的user_id爲1的性別,僱員類型,部門,移動設備。
我真的不知道如何,但在Eloquent上有->insert()
插入多個值。
$meta_values = [
['user_id' => $user->id, 'meta_key' => 'mobile', 'meta_value' => $mobile,],
['user_id' => $user->id, 'meta_key' => 'address', 'meta_value' => $address,],
['user_id' => $user->id, 'meta_key' => 'gender', 'meta_value' => $gender],
['user_id' => $user->id, 'meta_key' => 'birthday', 'meta_value' => Carbon::parse($birthday)->format('Y-m-d')],
['user_id' => $user->id, 'meta_key' => 'employee_type', 'meta_value' => $employee_type],
['user_id' => $user->id, 'meta_key' => 'division', 'meta_value' => $division],
['user_id' => $user->id, 'meta_key' => 'date_employed', 'meta_value' => Carbon::parse($date_employed)->format('Y-m-d')],
['user_id' => $user->id, 'meta_key' => 'avatar', 'meta_value' => $images->avatar]
];
$user->userMeta()->insert($meta_values);
下面是插入版本,但是更新版本將如何變化或者它的外觀如何。有任何想法嗎?
我認爲這將有可能通過使用循環,但我可能認爲這不會是一個好主意。
---編輯---
現在,這是我的臨時解決方案。這是我要做的第一件事,但是,除非有人對此問題有所答覆,否則這是我現在的解決方案。
//List all fields in an array to be updated
$meta_array = ['mobile', 'address', 'gender', 'birthday', 'employee_type', 'division', 'date_employed'];
for ($i = 0; $i < count($meta_array); $i++) {
$user->userMeta()
->where('meta_key', $meta_array[$i])
->update(['meta_value' => ${$meta_array[$i]}]);
}
感謝您的回答,但這並不意味着它會更新具有相同值的所有字段?對不起,如果我的問題不清楚。我編輯了我的問題,如果可能的話,每個字段的值會有所不同。 –
Eloquent只是MySQL的一個簡單包裝。當你做一個'UPDATE'時,你對指定的_all_列進行_same_更改,對於某些有限的記錄集(行)。所以我不認爲你想要的是可能的。 –
嗯,我明白了。感謝你,似乎我必須做到這一點混亂的方式。 –