Контроллер PHP Laravel работа с JSON

170
25 августа 2018, 16:30

у меня есть JSON массив который хранится в базе данных. Как реализовать алгоритм изменения/добавления/удаления данных из этого массива в контроллере PHP фреймворка Laravel? Сам массив выглядит вот так:

{
    "Me": {
        "Name": "Kirill",
        "Age": "24"
    },
    "Company": {
        "name": "Astra",
        "work": "Build"
    }
}
Answer 1

Ну алгоритм прост.
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);
}

Ну... остальные методы (удаление, добавление) сводятся к этому

READ ALSO
Как определить ID юзера в бот телеграм

Как определить ID юзера в бот телеграм

Есть код который обрабатывает команду юзера в бот телеграмХочу сделать чтобы он определял id пользователя который посылает команды

161
Загрузка файла на сервер с изменением названия

Загрузка файла на сервер с изменением названия

Вроде подобного не нашёлКак можно реализовать загрузка файла на сервер с изменением его названия на рандомную строчку

202
Если НЕ одно из двух определённых значений, то умолчание. Как сделать это в PHP?

Если НЕ одно из двух определённых значений, то умолчание. Как сделать это в PHP?

Мой скрипт на PHP принимает два языковых значения - &lang=ru или &lang=enЕсли параметр lang явно не указан или равен любому другому значению, то значение...

195
Как в php отделить номер от текста

Как в php отделить номер от текста

Привествую,есть код:

184