Изменение конкретного символа атрибута модели 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') метод и не влияет на первоначальное значение.

Другие вопросы по тегам