Activerecord 如何将列别名添加到yii活动记录模型中?

Activerecord 如何将列别名添加到yii活动记录模型中?,activerecord,primary-key,column-alias,Activerecord,Primary Key,Column Alias,在我以前的项目中,我使用长id作为表主键,如“shop\u id”或“order\u id”,但现在我只想使用“id”作为“shop\u id”的别名。如何仅将其添加到模型类,而不更改表。在那之后,我想要这样的东西 $model->id = $var 或 及 只需在模型代码中创建一个getter方法,如下所示: public function getId(){ return $this->shop_id } public function getId(){ retu

在我以前的项目中,我使用长id作为表主键,如“shop\u id”或“order\u id”,但现在我只想使用“id”作为“shop\u id”的别名。如何仅将其添加到模型类,而不更改表。在那之后,我想要这样的东西

$model->id = $var


只需在模型代码中创建一个getter方法,如下所示:

public function getId(){
   return $this->shop_id
}
public function getId(){
    return $this->{$this->tableSchema->primaryKey};
}
如果在许多表上都有此功能,则可以扩展CActiveRecord并向该类添加一个getter,如下所示:

public function getId(){
   return $this->shop_id
}
public function getId(){
    return $this->{$this->tableSchema->primaryKey};
}

不,当然是我干的。但在这种情况下,我们可以只获取或设置数据-$model->alias\u列。但是find()方法呢?我知道我们必须重载一些CActiveFider方法/与schema相关/Ahh,我明白了-这不是你问的问题,但是,你问了如何使用这种形式的非表变量:
$var=$model->id
。要实现这一点,您必须在Yii中重载相当多的方法,因为没有一个地方可以构建查询-这是一个相当复杂的过程。谢谢,我发现最好的方法是使用PostgreSQL数据库功能(规则系统)。