Переопределение первичного ключа

Есть таблица goods с полями id(PK) и cat_number.

В моделе Goods переопределяю первичный ключ




    public function primaryKey()

    {   

        return 'cat_number';

    }



Код контроллера




$model=Goods::model()->findByPk($id);



или




$model=$this->loadModel($id);



Генерирует Sql код:




SELECT * FROM `goods` `g` WHERE `g`.`id`=1388 LIMIT 1



вместо ожидаемого




SELECT * FROM `goods` `g` WHERE `g`.`cat_number`=1388 LIMIT 1



Непонятно почему происходит такое поведение…

Yii 1.9, таблица InnoDB

Если у таблицы уже есть PK, то ActiveRecord в метод primaryKey() даже не посмотрит. Однако ничто не запрещает изменить значение primaryKey напрямую через tableSchema, хотя сам не пробовал (да и выглядеть будет немного кривовато) :)

Изменение через tableShema к сожалению не помогло… :frowning:




   public function getTableSchema()

    { 

        $table = parent::getTableSchema();


        $table->columns['cat_number']->isPrimaryKey = true;


        return $table;

    }



Я имел в виду что-то типа:




public function init()

{

    $schema = $this->getTableSchema();

    $schema->primaryKey = 'cat_number';

}



P.S. Хотя init() не самое лучшее место для этого, а скорее всего и работать даже не будет.

А зачем это вообще делать?

Нельзя трогать структуру БД, но задача требует использовать другое поле в качестве PK