에 대한 I는 일대 다 관계에서 Object2
를 참조하는 객체, Object1
,이 하나 Object1
많은 Object2
에 있습니다.Yii2 :의 GridView 일대 관계형 데이터
내 Object1
보기에서 관련 Object2
의 yii\grid\GridView
항목 만 포함하려고합니다. Object1
데이터 이외에는 없습니다. GridView
의 Object2
항목 만 있습니다. 아래 같은 코드를 사용
는, 내가 내 컨트롤러에서 모두 $dataProvider
및 $searchModel
을 설정해야합니다 생각하지만 난 $id
와 Yii::$app->request->queryParams
을 연결하는 방법을 모르겠어요.
내 코드는 Object2
항목을 반환합니다. Object1
과의 관계에 관계없이 완벽한 검색 기능을 제공하지만 내가 찾고있는 것은 아닙니다.
이 방법이 올바른지 확신 할 수 없습니다. 누구든지 해결책을 알고 있습니까? 미리 감사드립니다.
/* 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에 무엇을 표시 하시겠습니까? – yafater
'Object'의 속성으로,'relation' 속성은 현재 뷰에서보고있는'Object1'의'id'입니다. –
object1의 모든 오브젝트에는 object2의 오브젝트가 여러 개 있습니다. 관계를 가져올 수 있으며 foreach를 사용하여 표시 할 수 있습니다. – yafater