我试图了解如何获取CActiveRecord模型的子类的模型。
我有以下两个基本类:
User
延长CActiveRecord
Tutor
延长User
它们之间的关联是表id
users
fk
,表tutors
中的User
。在我当前的应用中,我正在实施Tutor
课程,但我还需要来自For User class:
public function relations()
{
return array(
'tutor' => array(self::HAS_MANY, 'Tutors', 'user_id'),
);
}
For Tutor class:
public function relations()
{
return array(
'user' => array(self::BELONGS_TO, 'Users', 'user_id'),
);
}
的数据。
关系由gii设定如下:
{{1}}
我怎样才能使用填充了两个模型数据的对象?
注意:我的数据库表以复数命名,而模型位于单数。
答案 0 :(得分:1)
当您查询活动记录模型时,它应自动引入相关对象(前提是您已正确设置其关系)。像下面这样的东西给你一个开始。
$users=User::model()->findAll();
根据您对数据的处理方式,您需要决定是否要懒惰地获取相关表格或急切地获取它们。以下内容将急切地获取记录。
$users=User::model()->with('tutor')->findAll();
有关此主题的Yii文档非常好,非常值得一读: http://www.yiiframework.com/doc/guide/1.1/en/database.arr#performing-relational-query
答案 1 :(得分:1)
显然,只需使用以下命令即可在Yii中访问对象的兄弟姐妹:
$model->tutors
tutors
表示与兄弟对应的表格。如果与子项的关系为HAS_MANY
,则该命令将返回一个或多个数组,每个数组都包含一个兄弟实例。如果它是1:1(HAS_ONE
)关系,则该命令将直接返回该对象。