Сохранение JSON в БД

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
medifit
Сообщения: 9
Зарегистрирован: 2018.08.04, 13:39

Сохранение JSON в БД

Сообщение medifit »

Есть CRUD, сгенерированный Gii

Поле в БД - объект JavaScript, упакованный функцией JSON.stringify

Задача: декодировать его - править в форме - при сохранении закодировать и записать в БД

Как это лучше сделать в РНР?

в форме:

Код: Выделить всё

	 <?= $form->field($model, 'object')->textarea(['rows' => 12]) ?>
в модели, вероятно, нужно задействовать методы:

Код: Выделить всё


    public function afterFind() {
	//при открытии преобразовывать здесь
    }
    
    
     public function beforeSave($insert)
    {
  	  //здесь кодировать при сохранении
    }

Код: Выделить всё

	Json::decode($this->object) // ошибка   throw new InvalidArgumentException('Unknown JSON encoding/decoding error.');
Если я кодирую-раскодирую JavaScript - все работает на Ура
Аватара пользователя
SiZE
Сообщения: 2817
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

Re: Сохранение JSON в БД

Сообщение SiZE »

Что содержит $this->object перед тем как попасть в Json::decode? Обычно даже "на глаз" не сложно провалидировать json это или нет.

А вообще есть поодержка JSON из коробки если у вас БД поддерживает.
medifit
Сообщения: 9
Зарегистрирован: 2018.08.04, 13:39

Re: Сохранение JSON в БД

Сообщение medifit »

$this->object содержит объект JSON, упакованный в строку.
Вопрос по сути к знатокам РНР - о совместимости функций работы с JSON в PHP и JavaScript
Гуглил - предлагают на Yii2 ставить костыли для совместимости. Но это совсем несерьезно

Если это сложно реализовать - я напишу JS функции - все будет работать. Но хотелось узнать про альтернативный способ.

JSON из коробки - я это конечно знаю, но переделывать архитектуру большого проекта из за такой мелкой фичи нет смысла))
Ответьте пожалуйста, если есть реальный совет. А не просто для красного словца. Спасибо
Аватара пользователя
SiZE
Сообщения: 2817
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

Re: Сохранение JSON в БД

Сообщение SiZE »

medifit писал(а): 2022.02.17, 11:49 Вопрос по сути к знатокам РНР - о совместимости функций работы с JSON в PHP и JavaScript
Они совместимы absolutely
medifit
Сообщения: 9
Зарегистрирован: 2018.08.04, 13:39

Re: Сохранение JSON в БД

Сообщение medifit »

спасибо
Аватара пользователя
SiZE
Сообщения: 2817
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

Re: Сохранение JSON в БД

Сообщение SiZE »

Почему нет возможности продебажить состояния: client, request, controller? Это какая-то проблема высосанная из пальца
Аватара пользователя
maleks
Сообщения: 1992
Зарегистрирован: 2012.12.26, 12:56

Re: Сохранение JSON в БД

Сообщение maleks »

<?= $form->field($model, 'object')->textarea(['rows' => 12]) ?>
А что вы собрались в textarea редактировать?
json текст, или что?
Ответить