Вот обзор моей таблицы.Обновить строки, значения столбцов представляют собой ключи
Дело в том, значение meta_key
столбца представляют в качестве ключей.
Проблема в том, как бы я обновил поля user_id
. Например, я хочу обновить пол, employee_type, division, mobile, который имеет разные значения для каждого поля, которое имеет 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);
Вот версия вставки, но как будет выглядеть версия обновления или как она выглядит. Есть идеи?
Я думаю, что это было бы возможно, используя цикл, но я, вероятно, думаю, что это не будет отличная идея.
--- EDITED ---
В настоящее время, вот мое временное решение. Вот что я буду делать в первую очередь, но пока кто-то не ответит на эту проблему, на данный момент это мое решение.
//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. Когда вы выполняете «ОБНОВЛЕНИЕ», вы вносите изменения _same_ в указанные _all_ столбцы для определенного ограниченного набора записей (строк). Поэтому я не думаю, что вы хотите. –
Хммм, я вижу. Спасибо за это, кажется, я должен сделать это грязным способом. –