Relaciones entre 2 tablas

Hola,

no encuentro cual puede ser el error en el código que tengo. Al intentar hacer una consulta y que me traiga datos de una tabla que está relacionada no me trae datos de la tabla relacionada, simplemente se trae los de la tabla origen.

Las tablas:


Provincias:

===========

id

nombre

Municipios:

===========

id

nombre

id_provincia (clave foránea) hacía la otra tabla.

Las relaciones:


En Provincias




	public function relations()

	{

		return array(

			'municipioses' => array(self::HAS_MANY, 'Municipios', 'id_provincia'),

		);

	}



En Municipios




	public function relations()

	{

		return array(

			'id_provincia0' => array(self::BELONGS_TO, 'Provincias', 'id_provincia'),

		);

	}



En el controlador:





    public function actionInfoGeografica()

    {


        $provincias=Provincias::model()->with('municipioses')->findAll();

  

        $this->render('infoGeografica', array(

			'models'=>$provincias)

        );

    }



En la vista:


Hago un foreach y me saca los elementos de la tabla provincias, pero si intento acceder a algún elemento de la relación me dice que no existe. En el debug del Netbeans tampoco veo que se traiga los datos de la relación. Y mirando la consulta que construye Yii si la hace bien, la ejecuto en el MySQL Browser y va perfecta.

¿Alguna idea?

Saludos y gracias.

Salida que obtengo cuando quiero ir a un dato de la tabla relacionada es:

"Trying to get property of non-object"

¿Me puede ayudar alguien?

La consulta que me construye es esta:

SELECT provincias.id AS t0_c0, provincias.nombre AS t0_c1, provincias.codigo AS t0_c2, municipios.id AS t1_c0, municipios.nombre AS t1_c1, municipios.id_provincia AS t1_c2 FROM provincias INNER JOIN municipios municipios ON (municipios.id_provincia=provincias.id)

He cambiado a INNER JOIN y no tengo ningún registro nulo.

Me debería devolver algo de este estilo:

t0_c0 t0_c1 t0_c2 t1_c0 t1_c1 t1_c2

1 Albacete AB 1 Pozo Cañada 1

2 Ciudad Real CR 2 Puertolápice 2

2 Ciudad Real CR 3 Puertollano 2

2 Ciudad Real CR 4 Retuerta del Bullaque 2

Pero en la vista veo que me saca esto:

Array

(

[0] => Array


    (


        [id] => 1


        [nombre] => Albacete


        [codigo] => AB


    )





[1] => Array


    (


        [id] => 2


        [nombre] => Ciudad Real


        [codigo] => CR


    )





[2] => Array


    (


        [id] => 3


        [nombre] => Cuenca


        [codigo] => CU


    )





[3] => Array


    (


        [id] => 4


        [nombre] => Guadalajara


        [codigo] => GU


    )





[4] => Array


    (


        [id] => 5


        [nombre] => Toledo


        [codigo] => TO


    )





[5] => Array


    (


        [id] => 6


        [nombre] => Madrid


        [codigo] => M


    )

)

Es decir, solo los datos de la tabla Provincias.

no veo nada raro

en la vista haces algo como




<?php foreach($models as $n=>$model): ?>

....

<?php foreach($model->municipioses as $n2=>$model2): ?>

         ....

         <?php echo CHtml::encode($model2->nombre); ?>

....



de lo siguiente no estoy seguro:

las tablas son InnoDB? estan creadas las relaciones en la base? es mysql?

Horacio…

pues resulta que para mostrar los datos en pantalla no estaba haciéndolo bien…

No estaba haciendo bien el segundo foreach para recorrer el segundo objeto… Pero además me había bajado una clase de una página para recorrer objetos y sus contenidos de forma recursiva y parece que no lo estaba haciendo bien…

Joer, vaya cagada mía.

Muchísimas gracias.