0

我正在使用 Yii 框架。我想知道如何从我研究过的多个表中获取记录,但找不到任何有用的链接我正在使用以下代码,请让我知道我在哪里失踪

我的模型Task.php

public function relations()
{
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    return array(
        'prj_user' => array(self::BELONGS_TO, 'User', 'id'),
    );
}

模型用户.php

public function relations()
{
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    return array(
        array('task', self::HAS_MANY, 'Task','project_id')
    );
}

这是我的主要控制器

$criteria = new CDbCriteria;
$criteria->compare('t.id', 1);
$criteria->with = array( 'prj_user' => array('select' => 'username,title,roles', 'joinType'=>'inner join'));

$rows = Task::model()->findAll( $criteria );

但我仍然只从任务表中获取列,但我需要用户表中的更多三列请帮助我

4

1 回答 1

0

让 Yii 担心加入你的桌子。您的关系看起来不错,因此您应该能够直接访问它们

例如,这会返回什么?

foreach ($rows as $task)
{
    if ( isset($task->prj_user) )
        echo $task->prj_user->username . "<br>";
}

或这个?

this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>new CActiveDataProvider('Task'),
    'columns'=>array(
        'id',
        'prj_user.username',
        'prj_user.title',
        'prj_user.roles',
    )
));

->with() 用于急切加载,因此此时您可能不需要它。事实上,除非我完全误读了你,否则你可以一起删除你的标准。

于 2013-06-13T02:54:06.560 回答