у меня есть JSON массив который хранится в базе данных.
Как реализовать алгоритм изменения/добавления/удаления данных из этого массива в контроллере PHP фреймворка Laravel?
Сам массив выглядит вот так:
{
"Me": {
"Name": "Kirill",
"Age": "24"
},
"Company": {
"name": "Astra",
"work": "Build"
}
}
Ну алгоритм прост.
1. Получаем значение $json = $model->key;;
2. Декодим его $array = json_decode($json, 1);;
3. Изменяем $array['key'] = 'newVal';;
4. Обратно кодируем $json = json_encode($array, 1);;
5. Сохраняем $model->key = $json; $model->save();.
Все...
Но чтоб этого не делать постоянно в модели где используете json для хранения, реализуйте метод - updateJson($modelKey, $dataKey, $val);
И все сведется к этому - $model->updateJson('modelKey','dataKey', 'someValue');.
Метод будет выглядеть примерно так:
public function updateJson($modelKey, $dataKey, $val){
$model = $this->toArray();
$jsonData = json_decode($model[$modelKey], 1);
$jsonData[$dataKey] = $val;
$json = json_encode($jsonData, 1);
$update = [];
$update[$modelKey] = $json;
$this->update($update);
}
Ну... остальные методы (удаление, добавление) сводятся к этому
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости