Yii 对模型使用CGridView';s协会
我有一个和你有很多联系的模特 让我们假设这个学生有很多课程 我想使用CGridView显示特定学生的所有课程 大概是这样的:Yii 对模型使用CGridView';s协会,yii,relationships,Yii,Relationships,我有一个和你有很多联系的模特 让我们假设这个学生有很多课程 我想使用CGridView显示特定学生的所有课程 大概是这样的: $this->widget('zii.widgets.grid.CGridView', array( 'dataProvider' => $model->courses,
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider' => $model->courses,
'columns'=>array(
'name',
),
));
$dataProvider=new CActiveDataProvider('Course', array(
'data'=>$model->courses,
));
还尝试了新的CActiveDataProvider($model->courses)
作为数据提供者,但仍然不起作用
有没有一个简单的方法可以做到这一点?或者我必须在课程模型上创建一个搜索条件,并手动从学生模型中获取一些条件?首先要做几件事:
$model->courses
而不是$model->courses()
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider' => $model->courses,
'columns'=>array(
'name',
),
));
$dataProvider=new CActiveDataProvider('Course', array(
'data'=>$model->courses,
));
我最终做的是创建新的标准,以传递给我的数据提供者,该数据提供者做了与关系相同的事情。像这样:
$criteria=new CDbCriteria;
$criteria->join = "JOIN student_course_relation_table sc ON sc.course_id = t.id";
$criteria->compare('sc.student_id',$model->id);
$dataProvider=new CActiveDataProvider('Course', array(
'criteria'=>$model->courses,
));
我假设您正在使用连接表的多个关系。我希望这能有所帮助,尽管我确信这不是你想要做的。如果有人有更好的解决方案,请分享!我也想了解它!:)
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider' => new CArrayDataProvider($model->courses, array()),
'columns'=>array(
'name',
),
));