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.
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.
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…