Relazioni Tra Models

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?

Ho trovato da solo il problema: avevo impostato male la relazione nel model MateriePrime e questo impediva il recupero dei dati dal model.