Hi guys, following query will give me back result of 4 tables being invloved(see attachement)
SELECT person.vorname,person.nachname,dateianhang.dateiname,l_dateianhang_art.bezeichnung FROM
person JOIN e_dateianhang on e_dateianhang.id_person=person.id JOIN dateianhang ON
dateianhang.id_e_dateianhang=e_dateianhang.id JOIN l_dateianhang_art ON
l_dateianhang_art.id=dateianhang.id_dateianhang_art WHERE id_person=3;
id_person will be given by parameter of anonymous function!
My intention is to get this result in GridView. I have no problems defining this query in yii-Syntax, but i don’t know, how to implement index.php in Controller,which uses searchModel. at the moment, I get all values of just one table. Here is code of index.php
public function actionIndex($id) {
$searchModel = new DateianhangSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams,$id);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
This is, GridView looks like:
<?php
$gridColumn = [
.
.
.
],
<?=
GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => $gridColumn,
.
.
.
This is, searchModel looks like
public function search($params)
{
$query = Dateianhang::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$this->load($params);
if (!$this->validate()) {
// uncomment the following line if you do not want to return any records when validation fails
// $query->where('0=1');
return $dataProvider;
}
$query->andFilterWhere([
'id' => $this->id,
'id_e_dateianhang' => $this->id_e_dateianhang,
'id_dateianhang_art' => $this->id_dateianhang_art,
'angelegt_am' => $this->angelegt_am,
'angelegt_von' => $this->angelegt_von,
'aktualisiert_am' => $this->aktualisiert_am,
'aktualisiert_von' => $this->aktualisiert_von,
'optimistic_lock' => $this->optimistic_lock,
]);
$query->andFilterWhere(['like', 'bezeichnung', $this->bezeichnung])
->andFilterWhere(['like', 'dateiname', $this->dateiname]);
return $dataProvider;
}