Баг Yii или Руководства

Баг Yii или руководства

В мануале по AR ясно касательно методов update* черным по белом написано.

Post::model()->update($attributes,$condition,$params);

Здесь $attributes — это массив значений полей, проиндексированных по имени поля, $counters — массив инкрементных значений, проиндексированных по имени поля, $condition и $params аналогично описанию выше.

В моем понятии это массив $arr[‘field_name’] => ‘new_field_value’ … так ? если так смотрим метод update в исходниках




public function update($attributes=null)

	{

		if($this->getIsNewRecord())

			throw new CDbException(Yii::t('yii','The active record cannot be updated because it is new.'));

		if($this->beforeSave())

		{

			Yii::trace(get_class($this).'.update()','system.db.ar.CActiveRecord');

			if($this->_pk===null)

				$this->_pk=$this->getPrimaryKey();

				


			$this->updateByPk($this->getOldPrimaryKey(),$this->getAttributes($attributes));

			$this->_pk=$this->getPrimaryKey();

			$this->afterSave();

			return true;

		}

		else

			return false;

	}



Основное что нам тут нужно это вот эта строчка


$this->updateByPk($this->getOldPrimaryKey(),$this->getAttributes($attributes));

передаем в другой метод. наш массив, обработанный методом $this->getAttributes():

Вот его исходник…

В его исходнике есть такой момент…




if(is_array($names))

{

			$attrs=array();

			foreach($names as $name)

			{

				if(property_exists($this,$name))

					$attrs[$name]=$this->$name;

				else

					$attrs[$name]=isset($attributes[$name])?$attributes[$name]:null;

			}

			return $attrs;

		}



Основное, что нам тут нужно это цикл foreach в котором видно, что мы бежим по ЗНАЧЕНИЯМ нашего массива.

и создаем новый массив , где ключом является наше ЗНАЧЕНИЕ, и присвоить пытаются свойство обьета

$this->ЗНАЧЕНИЕ ( Что конечно же будет Null)


$attrs[$name]=$this->$name;

Который час пытаюсь обновить данные… этим методом, не пойму, что к чему…

Я конечно могу использовать метод save . но стало просто интересно то ли это оплошность разработчиков, то ли я что-то не так понимаю

В дубликате поста вам уже ответили