lexen77
(Antonio Flaminio)
1
Salve,
ho tre tabelle collegare tra di loro
Citta
id_citta
citta
id_provincia
Provincia
id_provincia
provincia
id_nazione
Nazione
id_nazione
nazione
Mi trovo nella pagina index delle views di citta dove visualizzo
un elenco ,tramite GridView, di città che vorrei pero visualizzare in questo formato
"citta-nazione"
Quale è la soluzione migliore da intraprendere?
Grazie
Ciao Antonio,
devi creare le relazioni nei model e poi nella gridview puoi direttamente puntare
nome_relazione.campo_tabella_relazionata
Es. se la relazione nel model Citta si chiama getNazione(), allora avrai nella gridview l’attributo:
‘nazione.nome_nazione’, se il campo della tabella nazione che contiene il nome si chiamata nome_nazione.
Trovi tutto qui:
http://www.yiiframework.com/doc-2.0/yii-db-activerecord.html
lexen77
(Antonio Flaminio)
3
Ciao Fabrizio,
scusa ma in citta non trovo solo la relazione getProvincia?
public function getProvincia()
{
return $this->hasOne(Provincia::className(), ['id_provincia' => 'id_provincia']);
}
Da quel che ho capito la relazione getNazione la trovo in Provincia.
Quindi come faccio a ricavare la Nazione dal Model Città?
Puoi mettere nel model Citta il getProvincia() e nel model Provincia il getNazione().
Quindi poi da Citta puoi fare
$nazioneDaCitta = $modelCitta->provincia->nazione.
Ok?
lexen77
(Antonio Flaminio)
5
Ciao Fabrizio,
grazie funziona perfettamente. Anche se in verità non ho capito la logica.
Quale’ il nesso del collegamento tra i vari Modelli e getRelazione di ogni modello?
Grazie
saluti