Не работает save()

Есть модель

$lastVisit = User::model()->notsafe()->findByPk(Yii::app()->user->id);

$lastVisit->lastvisit = date("Y-m-d H:i:s", time());

$lastVisit->save();

Проблема не в валидации.

Не работает метод getPrimaryKey(), он возвращает не значение первичного ключа, а его название.

Если сделать

$lastVisit->updateByPk(15,$lastVisit->getAttributes());

Так сохраняет. 15 это значение первичного ключа.

А если

$lastVisit->updateByPk($lastVisit->getPrimaryKey(),$lastVisit->getAttributes($attributes));

так не сохраняет.Почему????

Пришлось сделать:

$lastVisit = new User;

$lastVisit->updateByPk(Yii::app()->user->id, array(‘lastvisit’=>date(“Y-m-d H:i:s”, time())));

Может кто-нибудь объяснит почему предыдущий код не работает?

Не понятно, как именно выглядит ‘предыдущий код’. Выглядит так, будто вы сначала ищете запись по PK, а потом по PK апдейтите, что излишне, можно либо сразу апдейтить по PK, или делать апдейт уже найденной модели.

e.g.


User::model()->updateByPk();

И если у вас была проблема с именно getPrimaryKey(), уточните, не переопределен ли в вашем классе этот метод, и что именно с ним не так происходит (если действительно возвращает неожиданный результат).