Задать вопрос

Как обновить 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'
]);


Но как обновить данные в моем случае? Подскажите кто знает, не могу понять...
  • Вопрос задан
  • 1057 просмотров
Подписаться 2 Простой 5 комментариев
Решения вопроса 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 я думаю нет, только если свою собственную писать.
Но вообще это выглядит как изначально кривая структура бд.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы