Не понятно, как именно выглядит ‘предыдущий код’. Выглядит так, будто вы сначала ищете запись по PK, а потом по PK апдейтите, что излишне, можно либо сразу апдейтить по PK, или делать апдейт уже найденной модели.
e.g.
User::model()->updateByPk();
И если у вас была проблема с именно getPrimaryKey(), уточните, не переопределен ли в вашем классе этот метод, и что именно с ним не так происходит (если действительно возвращает неожиданный результат).