Можно ли (и если да то как) внести изменения в JSON массив только измененного значения не пересобирая массив заново?
Суть такая: У пользователя есть разные опции в аккаунте. Пользователь что-то выбрал в каждой опции и я записал все опции в бд.
$array = [
'option_1' => '1',
'option_2' => '2',
'option_3' => '3'
];
$database->update('users',['user_option[JSON]' => $array],[
'id' => $user_id
]);
//Далее пользователь решил что-то изменить и прислал другое значение одной из опций.
$newValue = '444';
//Достаю его опции
$user_option = $database->get('users','user_option[JSON]',[
'id' => $user_id
]);
//Получаю
Array
(
[option_1] => 1
[option_2] => 2
[option_3] => 3
)
//Теперь нужно изменить
[option_1] => 1 на [option_1] => 444
//Не хочу делать так
$newarray = [
'option_1' => $newValue,
'option_2' => $user_option['option_2'],
'option_3' => $user_option['option_3']
];
$database->update('users',['user_option[JSON]' => $newarray],[
'id' => $user_id
]);
Есть ли способ изменить только 'option_1' => $newValue не переписывая все опции, т.к их может быть несколько десятков.
Спасибо!
Ответы (1 шт):
Автор решения: Majestio
→ Ссылка
Не указан движок БД. Если это MySQL, то можно воспользоваться "сырыми" запросами для обновления информации. И составлять, собственно, нужные.
К примеру:
Конечно нужно смотреть еще версию движка БД, чтобы таковая возможность поддерживалась.