1

我试图了解如何获取 CActiveRecord 模型的子类的模型。

我有以下两个基本课程:

  • User扩展CActiveRecord
  • Tutor扩展User

它们之间的联系是idtableusersfkin table tutors。在我当前的应用程序中,我正在实例化User该类,但我还需要来自Tutor.

gii 设置的关系如下:

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'),
    );
}

我该怎么做才能得到一个填充了两个模型数据的对象?

注意:我的数据库表以复数命名,而模型以单数命名。

4

2 回答 2

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

于 2013-07-11T00:15:58.170 回答
1

显然,可以在 Yii 中简单地使用以下命令访问对象的兄弟姐妹:

$model->tutors

其中tutors表示兄弟对应的表。如果与孩子的关系是HAS_MANY,则该命令将返回一个或多个数组,每个数组都包含同级的一个实例。如果是 1:1 ( HAS_ONE) 关系,命令会直接返回对象。

于 2013-07-11T00:49:22.387 回答