Ciao a tutti,
sono nuovo del forum e “di Yii” e mi sto appassionando sempre più a questo framework. Sto avendo un problema con le viste le relazioni (immagino sia l’ennesimo topic sull’argomento) ma non sono riuscito a trovare una soluzione e pertanto confido nella vostra esperienza al riguardo sperando che possa essere utile a qualche altro novellino che si accinge a provare questo fw.
Il mio db è costituito da 3 tabelle:
-
Clienti
-
Medici
-
Referti
in particolare:
Medici(1) --> (molti) Clienti (1) —> (molti) Referti
e le chiavi sono
id_medico —> Clienti.id_medico
Clienti.id —> Referti.id_cliente
PS: in allegato un img.
Le relazioni sono create correttamente (credo) sia a livello di db (InnoDB) che a livello logico all’interno del fw. In particolare per la tabella “Clienti” sono definite (nel Model Clienti) come segue:
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'idMedico' => array(self::BELONGS_TO, 'MediciBase', 'id_medico'),
'refertis' => array(self::HAS_MANY, 'Referti', 'id_cliente'),
);
}
Nella vista admin, ho una CGridView con l’elenco dei clienti, ma vorrei visualizzare anche le informazioni relative al medico associato a ciascun cliente. Per ora ho fatto cosi:
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'clienti-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'id',
'nome',
...
'idMedico.cognome::Medico', //Questa è la riga inserita
...
array(
'class'=>'CButtonColumn',
),
),
)); ?>
La relazione funziona correttamente, ma non so se è il procedimento corretto. Devo modificare in questo modo tutte le viste in cui voglio far comparire campi di un’altra tabella relazionata? E poi, come faccio a fare in modo che il campo “cognome” del Medico sia cliccabile in modo da reindirizzare alla pagina di dettaglio del medico?
Grazie in anticipo per le risposte e scusate la lunghezza del post.