Yii - методы начинающиеся на get/set - "виртуальные атрибуты"
Primary tabs
базовая статья = http://www.yiiframework.com/wiki/167/und...
ВНИМАНИЕ: возможно возникновение подобной проблемы.
просто приведу пример модели - в качестве пары методов (один для получения - getAlias, а другой для установки значения - setAlias) которой реализован виртуальный атрибут Alias =
<?php class Page extends CActiveRecord { /*в качестве правила про верки для единственного поля нашей формы установим, что длинна сообщения не должна превышать 200 символов*/ public function rules() { public static function model($className = __CLASS__) { return parent::model($className); } /** * возвращаем имя таблицы БД для данной модели */ public function tableName() { return '{{page}}'; } public function relations() // задаём отношения с другими классами (User) { return array( // связи 'aliass' => array(self::HAS_ONE, 'Alias', 'urlalias_id'), ); } function attributeLabels() { return array( 'verifyCode' => 'Код проверки', ); } // виртуальный атрибут для получения значения alias function getAlias() // метод будет извлекать некоторое поле связанной модели { // если известен id связывающий нашу модель с той, где хранится alias if ($this->urlalias_id){ // если это не NULL $alias = Alias::model()->findByAttributes( // пытаемся подгрузить модель из базы array('id' => $this->urlalias_id)); // по-идее она там должна быть if ($alias) return $alias->alias; // возвращаем поле указанной модели } else return false; } // виртуальный атрибут для установки значения alias // для работы с передаваемым адрибуту значением мы будем использовать $value function setAlias($value) // метод будет извлекать некоторое поле связанной модели { $result = true; // просто значение по-умолчанию if (isset($value)){ // если значение вообще опредлено if ($value != ''){// если оно непустое // если известен id связывающий нашу модель с той, где хранится alias if ($this->urlalias_id){ // если это не NULL $alias = Alias::model()->findByAttributes( // пытаемся подгрузить модель из базы array('id' => $this->urlalias_id)); // по-идее она там должна быть if ($alias) $alias->alias = $value; // перезаписываем значение пседонима } else // если с данной страницей ещё не связан не один экземпляр другой модели { // то далее создадим новый экземпляр модели, привязываемой к Page и // привяжем его $alias = new Alias(); // то создаём новый объект // и заполняем его рядом свойств, которые получены через $_GET $alias -> urlInfoSet(); $alias->alias = $value; // опять же- устанавливаем значение } $result = $alias->save(); // возвращаем признак успешности сохранения модели } } else {// если значение пустое или вообще не опредлено if ($this->urlalias_id){ // если что-то было уже привязано $alias = Alias::model()->findByAttributes( // пытаемся подгрузить модель из базы array('id' => $this->urlalias_id)); // по-идее она там должна быть if ($alias) // если такая запись реально есть $alias->delete();// удаляем её } } return $result; // возвращаем результат } }
- Log in to post comments
- 8142 reads