【发布时间】:2016-07-31 17:39:45
【问题描述】:
我有一个对象Object1,它以一对多的关系引用Object2:一个Object1 到多个Object2。
在我的Object1 视图中,我试图仅包含相关Object2 项目的yii\grid\GridView。除了Object1 数据之外。仅GridView 中的Object2 项。
使用下面这样的代码,我相信我必须在我的控制器中同时设置$dataProvider 和$searchModel,但我不确定如何将Yii::$app->request->queryParams 与$id 链接起来。
我的代码只返回所有 Object2 项目,无论它们与 Object1 的关系如何,虽然这对我来说非常有意义,但不是我要寻找的。p>
我什至不确定这是不是正确的方法。有谁知道解决方案?提前致谢。
/* Object1 model */
public function getRelations() {
return $this->hasMany(Object2::className(), ['relation' => 'id']);
}
/* Object1 view */
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'id',
'attr1',
'attr2',
'attr3',
'attr4',
['class' => 'yii\grid\ActionColumn'],
],
]);
/* Object1 controller */
public function actionView($id){
$searchModel = new Object2Search();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('view', [
'model' => $this->findModel($id),
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
【问题讨论】:
-
你想在你的gridview中显示什么?
-
Objectt2的属性,其relation属性是视图中当前正在查看的Object1的id。 -
object1 中的每个对象在object2 中都有多个对象。您可以获取关系并使用foreach 来显示它们
-
是的。我当然可以。但我想使用 GridView。
-
可以自定义gridview