关系:MySQL 数据库视图和 Yii 的 CActiveRecord


Relations: MySQL database view and Yii's CActiveRecord

我正在编写的这个应用程序中有几个表格。其中之一是另一个数据库连接上的表视图:

View Staff
staffid,
fullname
<etc>
Table User
user_id
staffid
<etc>

尝试使用 with() 方法,如下所示: User::model()->with('Staff')->findAll() Invalid argument supplied for foreach()第 826 行创建错误:

825    $pk=array();
826         foreach($this->_pkAlias as $name=>$alias)
827         {
828             if(isset($row[$alias]))

问题是 Yii 期待一个主键,但视图默认不声明主键?

我能在这里做什么?

如果其他人遇到此问题,答案是通过使用函数 primaryKey 定义主键在模型中覆盖它。

public function primaryKey() {
    return 'staffid';
}

参考: http://www.yiiframework.com/forum/index.php/topic/6403-how-to-use-cjoinelement-on-a-table-without-primarykey-in-database/page__view__findpost__p__32815