фнкц() не забыть и другим помочь

Массив как атрибут модели

31 мая 2015 г. одна правка с 30 мая 2015 г.

В afterFind() добавляем строку с распаковкой json строки. Вторым параметром в json_decode передаем true, чтобы получить ассоциативный массив, а не объект.

//в модель добить
protected function afterFind() //выполняется для каждой записи ActiveRecord
{
    parent::afterFind(); //наследуем родительский метод
    $this->unlocking = json_decode($this->unlocking, true);
}

Перед сохранением запаковываем массив в атрибуте модели обратно в строку JSON.

Вторым параметром json_encode ставим JSON_UNESCAPED_UNICODE, на случай если в массиве есть unicode символы.

//в модель добить
protected function beforeSave() 
{
    if (parent::beforeSave()) {
        $this->unlocking = json_encode($this->unlocking, JSON_UNESCAPED_UNICODE);
        return true;
    } else {
        return false;
   }
}

После сохранения опять запускаем распаковку, иначе при дальнейшем выполнении в атрибуте будет лежать сохраненная закодированная строка, а не распакованный массив:

//в модель добить
protected function afterSave() 
{
    parent::afterSave();
    $this->afterFind(); 
}
Скрыть текст Скрыть код

Спасибо × 56 Бред × 28

Другие записи

Командная строка
php composer update errors
Подключение javascript в yii2
Верстка в yii2
Установка yii2
Сохраняем время создания и изменения записи
Тип данных для денег в mysql
После обновления Composer выдает Deprecation Notice
Не находит action из контроллера Not Found (#404)
ЧПУ в Yii2
Ошибка Yii2 Call to a member function getActiveValidators() on null
Как в yii2 проверить isNewRecord в afterSave()

Метки