Доброго времени суток.
Проблема частично освещена, но решения для себя я не нашел.
Дело в том, что значение модели меняется, save() возвращает true, но значение в базе не меняется. Собственно код:
<?php
class onFlyEditBehavior extends CBehavior
{
/**
* PK записи в базе
*
* @var int
*/
protected $id;
/**
* Название поля в базе / свойства модели
*
* @var string
*/
protected $field;
/**
* Объект модели
*
* @var CActiveRecord
*/
protected $model;
/**
* Новое значение для свойства модели
*
* @var string
*/
protected $value;
/**
* Присваивание нового значения для выборанной модели, с заданым полем и ID
*
* @return boolean
*/
public function process()
{
if( $this->init() )
{
$field = $this->field;
echo $this->model->$field; // Выводит прошлое значение
$this->model->$field = $this->value;
echo $this->model->$field; // Выводит новое значение
echo $this->model->save(false); // Выводит 1
return true;
}
else
return false;
}
/**
* Просто инициализация свойств
*
* @return boolean
*/
protected function init()
{
if( !empty($_POST['id']) && !empty($_POST['value']) && !empty($_POST['field']) )
{
if( $this->owner instanceof CController )
{
$this->id = $_POST['id'];
$this->field = $_POST['field'];
$this->value = $_POST['value'];
// Метод контроллера для загрузки, относящейся к нему модели
$this->model = $this->owner->loadModel($this->id);
CVarDumper::dump($this->model); // Убеждаюсь, что модель загрузилась
return true;
}
else
return false;
}
else
return false;
}
}
Спасибо за ответы.