Изменение конкретного символа атрибута модели YII cactiverecord
Как изменить конкретный символ атрибута модели YII cactiverecord? Не понимаю, почему это не работает:
echo $model->attr; // aaa
$model->attr[1] = 'b';
echo $model->attr; // aaa
1 ответ
Решение
Использование substr_replace
функция:
echo $model->attr; // aaa
$model->attr = substr_replace($model->attr, 'b', 1, 1);
echo $model->attr; // aba
http://www.php.net/manual/en/function.substr-replace.php
Также вы можете использовать этот подход:
$newValue = $model->attr[1] = 'b';
$model->attr = $newValue;
echo $model->attr; // aba
Ваш пример не работает, потому что на самом деле $this->AttributeName
выполнять CActiveRecord::getAttribute('AttributeName')
метод и не влияет на первоначальное значение.