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(); }