Как обновить json-данные в БД?

Всем привет! Не могу понять как обновить данные в БД с типом JSON.
Имею данные
id | data
1 | [{"_id": "1", "name": "Misha", "age": "30"}, {"_id": "2", "name": "Olya", "age": "25"}]
2 | ...

Как обновить в строке 1, возраст на 35 у пользователя Olya ?

Если был бы не многомерный массив, вот так получилось бы сделать

Section::where([
   "id" => 1,
])->update([
   'data->age' => '35'
]);


Но как обновить данные в моем случае? Подскажите кто знает, не могу понять...
  • Вопрос задан
  • 1004 просмотра
Решения вопроса 1
GrozInventor
@GrozInventor Автор вопроса
Всё оказалось проще...

работает так
Section::where([
   "id" => 1
])->update([
   'data->0->age' => '35'
]);


при условии что в данных наглядно указан ключ

{"0": {"_id": "1", "name": "Misha", "age": "30"}, "1": {"_id": "2", "name": "Olya", "age": "25"}}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Если вы точно знаете что нужно обновить данные у 2го пользователя в массиве, то вас спасет JSON_SET.
https://stackoverflow.com/questions/48552009/mysql...

Функций которые бы позволили обновить age со сравнением поля name я думаю нет, только если свою собственную писать.
Но вообще это выглядит как изначально кривая структура бд.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы