YiiConf 2017 всё ближе! Не забудьте купить билет.

Связь не по первичному ключу в MyISAM

При использовании InnoDB или другой базы с правильно выставленными внешними ключами,
Yii отлично определяет нужные поля для связей типа HAS_MANY. Если же используется
MyISAM, в котором поддержки внешних ключей нет, или view, необходимо задать их в коде:

class MyModel extends CActiveRecord
{
    public function getTableSchema()
    {
        $table = parent::getTableSchema();

        $table->columns['fk_column_name']->isForeignKey = true;
        $table->foreignKeys['fk_column_name'] = array('MyRelatedModel', 'related_model_fk');

        return $table;
    }
}

Полезные ссылки