Buen día, tengo un problema que no logro solucionar tengo 3 modelos PAÍS, DEPARTAMENTO Y CIUDAD, necesito que en el GridView de ciudad salga el departamento al que pertenece la ciudad y el país al que pertenece dicho departamento. El inconveniente es que la ciudad solo tiene una relación con el departamento.
public function getDepartamento()
{
return $this->hasOne(Departamento::className(), ['id' => 'iddepartamento']);
}
Mi modelo ciudadesSearch lo tengo asi
public function search($params)
{
$query = Ciudades::find();
$query->where('ciudades.idanulo=0');
$query->joinWith(['departamento']);
$query->innerJoin('pais', 'departamento.idpais= pais.id');
// add conditions that should always apply here
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$dataProvider->sort->attributes['departamento'] = [
// The tables are the ones our relation are configured to
// in my case they are prefixed with "tbl_"
'asc' => ['departamento.nombre' => SORT_ASC],
'desc' => ['departamento.nombre' => SORT_DESC],
];
$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;
}
// grid filtering conditions
$query->andFilterWhere([
'idciudad' => $this->idciudad,
'idanulo' => $this->idanulo,
]);
$query->andFilterWhere(['like', 'ciudad', $this->ciudad]);
$query->andFilterWhere(['like', 'departamento.nombre', $this->departamento]);
return $dataProvider;
}
alguna idea o sugerencia?