Buongiorno a tutti,
sto imparando Yii provando a scrivere un’applicazione per la gestione di ricette di cucina.
Il Db (Mysql) ha tre tabelle:
-
piatti (id, nome, preparazione)
-
ingredienti (id, id_piatto, id_materia_prima, grammi)
-
materie_prime (id, nome, calorie, prezzo_gr)
Sto lavorando sulla view admin di ingredienti. Il mio scopo è di permettere all’utente di:
-
Scegliere il piatto su cui lavorare da una DropDown [fatto]
-
Selezionare l’elenco ingredienti in base al piatto scelto [fatto]
-
Visualizzare nell’elenco ingredienti il nome delle materie prime al posto dell’id [qui ho il problema].
Per visualizzare l’elenco ingredienti utilizzo il widget CGridView e vorrei che la colonna che contiene id_materia_prima mostrasse il nome della materia prima.
Nel model Ingredienti ho impostato le relazioni in questo modo:
return array(
'ingredientePiatto' => array(self::BELONGS_TO, 'Piatti', 'id_piatto'),
'ingredienteMateriaPrima' => array(self::BELONGS_TO,'MateriePrime','id_materia_prima'),
);
Nella view admin di ingredienti ho:
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'ingredienti-grid',
'dataProvider'=>$model->search(),
// 'filter'=>$model, --> non voglio visualizzare la riga di ricerca
'columns'=>array(
// 'id',
'ingredientePiatto.nome',
'ingredienteMateriaPrima.nome',
'grammi',
array(
'class'=>'CButtonColumn',
),
),
)); ?>
Il nome del piatto appare correttamente, quello della materia prima no (tabella vuota ed errore nel caricamento della pagina).
Ho il sospetto che mi sto incasinando nella relazione tra tabelle/models, ma ci sto girando attorno da due giorni e ho perso la lucidità necessaria a capire il mio errore.
Qualcuno mi può aiutare?