Ayuda con CActiveDataProvider...

Hola:

Por favor necesito ayuda con este problema: Estoy escribiendo una función php que devuelve

un arreglo de datos como resultado de una consulta usando AR relacional. Específicamente estoy

usando la clase CActiveDataProvider, y como parámetros de la función tengo el nombre del modelo

y un objeto de tipo CDbCriteria para personalizar la consulta.

El problema está luego de obtener los datos a través del método CActiveDataProvider::getData,

el cual devuelve un arreglo de objetos del modelo correspondiente al parámetro $nombreModelo,

en mi caso necesito devolver un arreglo bidimensional con todos los valores de la consulta, y

sólo he logrado hacerlo con las columnas correspondientes a la tabla del modelo, y no de toda la

consulta, para esclarecer escribo el código de la función:




public function obtenerDatos($nombreModelo, $criteria)

	{

                // creo el DataProvider

		$dataProvider=new CActiveDataProvider($nombreModelo);

		$dataProvider->criteria = $criteria;	

		

                // obtengo los datos	

		$modelArray = $dataProvider->getData(true);


                // recorro los datos para copiarlos hacia el arreglo bidimencional $dat

		$dat = array();

		foreach ($modelArray as $value)

		{

                        /* OJO - AQUI ESTA EL PROBLEMA: AL OBTENER LOS DATOS DE CADA FILA, SOLO OBTENGO 

                           LAS COLUMNAS CORRESPONDIENTES AL MODELO ESPECIFICADO EN LOS PARAMETROS */

			$modelAttrs = $value->attributes;

			$model = $modelAttrs;

			$dat[] = $model;

		}

		

                // devuelvo los datos y el total del numero de filas

		$total = $dataProvider->totalItemCount;		

		echo json_encode(array('datos'=>$dat,'total'=>$total));

	}



Esta función trabaja bien cuando se quiere solamente listar los datos de un modelo,

sin embargo cuando se desea listar un resultado más complejo, por ejemplo la union de este modelo

con una relacion especificada con un ‘with’ en el parápetro $criteria, entonces no funciona bien pues

sólo se devuelven los datos relativos a las columnas del modelo $nombreModelo.

El problema debe estar el la línea de código dentro del foreach:

$modelAttrs = $value->attributes;

donde intento copiar toda una fila de los datos obtenidos por $dataProvider->getData(true);

entonces esa sería mi pregunta:

¿Cómo obtengo todos los datos de una fila en CActiveDataProvider::getData?

Mis disculpas por la lagra explicación.

Agradeceré mucho cualquier respuesta o sugerencia.

Gracias de antemano y tengan un exelente día:

Yordanis.

Prueba poner en el criteria la propiedad together=true

http://www.yiiframework.com/doc/api/CDbCriteria#together-detail

solo disponible desde 1.1.4

Hola, gracias por la respuesta, sigo con el mismo problema luego de cambiar esa propiedad en el criteria, es problema es que la consulta si arroja todos los datos (los de las tablas relacionadas) pero al copiarlos para otro arreglo es que no encuentro la manera de hacerlo, pues para copiar cada fila en mi codigo hago lo siguiente:

$modelAttrs = $value->attributes;

donde $value es una fila del conjunto de datos devueltos por CActiveDataProvider->getData

$value->attributes; solo devuelve los datos correspondientes a los atributos declarados en el modelo en cuestion, y no los datos de la relacion que se haya especificado en el criteria, lo que necesito es una manera de obtener los datos de toda la fila.

Saludos y buen dia,

Yordanis.

Hola

se me ocurre que hagas otro foreach para $value




...

//$modelAttrs = $value->attributes;

foreach ($value as $col) $modelAttrs[]=$col;

$model = $modelAttrs;

$dat[] = $model;

...




(y manteniendo el together)

Muy buena idea !, sin embargo la iteracion a través de $value sólo pasa por las mismas columnas de $value->attributes, almenos ese es el resultado que obtengo.

Hola

bien, creo que tu problema esta en el criterio

pon el codigo que setea el $criteria asi lo vemos

seguramente te falta agregar a la propiedad select los campos de las relaciones

ejemplo, supone que tienes Libros y Autores (cada libro tiene su autor)





$criteria=new CDbCriteria;

$criteria->with = array('autor');

$criteria->together=true;

$criteria->select='t.*,autor.nombre';



no tested :(

Agregué el valor de esta propiedad (select) y obtengo el mismo resultado, este es el codigo de mi criteria:

$criteria = new CDbCriteria(array(

			'with'=>'ProvRelac',


			'together'=>true,


			'select'=>'Cuenca.*,ProvRelac.denominacion',


	));

donde "Cuenca" es una entidad (semejante a Libros) y "ProvRelac" es la relacion que se asemeja a los autores en el ejemplo anterior.

Saludos y muchas gracisa por su ayuda.

Ups!

si miras el log, que consulta genera? tiene todos los campos?

para habilitar el log, busca en el config.php la siguiente entrada y habilitas array(‘class’=>‘CWebLogRoute’,):




		'log'=>array(

			'class'=>'CLogRouter',

			'routes'=>array(

				array(

					'class'=>'CFileLogRoute',

					'levels'=>'error, warning,trace',

				),

				// uncomment the following to show log messages on web pages

				array('class'=>'CWebLogRoute',),


			),

		),




Ok, este es el criteria que tengo:




criteria = new CDbCriteria(array(

				'with'=>'ProvRelac',

				'together'=>true,

				'select'=>'Cuenca.*,ProvRelac.denominacion',

		));



Y esta es la saluda del log:

Querying SQL: SELECT "t"."id_cuenca" AS "t0_c0", "t"."denominacion" AS

"t0_c1", "t"."id_provincia" AS "t0_c2", "t"."denominacion" AS "t0_c1",

"t"."id_cuenca" AS "t0_c0", "ProvRelac"."id_provincia" AS "t1_c0",

"ProvRelac"."denominacion" AS "t1_c1" FROM "tb_cuenca" "t" LEFT OUTER JOIN

"tb_provincia" "ProvRelac" ON

("t"."id_provincia"="ProvRelac"."id_provincia") LIMIT 10

in /media/2fe9a095-2171-422d-a99b-f3df1cec1bca/DEV/svn/trunk

Hidraulica/MarcoTrabajo/aplicacion/protected/components/AccionListarModelo.php

(44)

in /media/2fe9a095-2171-422d-a99b-f3df1cec1bca/DEV/svn/trunk

Hidraulica/MarcoTrabajo/aplicacion/index.php (13)

Por lo que veo todo está en orden con la consulta, sin envargo cuando itero por las colunmas no obtengo el valor "ProvRelac"."denominacion" que pertenece a la relación.

Por lo tanto creo que mi problema se reduce a:

¿Cómo itero sobre el arreglo (lógicamente bidimensional) que devuelve el método CActiveDataProvider::getData?

Muchas gracias nuevamente por la ayuda.

Saludos cordiales.

no se me ocurren mas ideas, jeje

prueba hacer un dump del arreglo

echo ‘<pre>’

echo print_r($value);

echo ‘</pre>’

si no tiene el dato de la relacion,

si lo tiene, eureka!

sino, apelemos a algún otro miembro del foro!!!! que los hay y muy buenos!

Ok, muchas gracias de todas formas voy a postear mi duda en el foro de inglés… :rolleyes:

Saludos.

Yordanis, Horacio tiene razón, si nos mostras la salida del print_r($value) vamos a tener una idea mejor de por donde podemos ir…

Ok, dado este criteria:




		$this->listarCriteria = new CDbCriteria(array(

				'with'=>'ProvRelac',

				'together'=>true,

				'select'=>'Cuenca.*,ProvRelac.denominacion',

		));



Este es el resultado mostrado del print_r($value):

Cuenca Object

(

[_md:CActiveRecord:private] =&gt; CActiveRecordMetaData Object


    (


        [tableSchema] =&gt; CPgsqlTableSchema Object


            (


                [schemaName] =&gt; public


                [name] =&gt; tb_cuenca


                [rawName] =&gt; &quot;tb_cuenca&quot;


                [primaryKey] =&gt; id_cuenca


                [sequenceName] =&gt; sec_cuenca


                [foreignKeys] =&gt; Array


                    (


                        [id_provincia] =&gt; Array


                            (


                                [0] =&gt; tb_provincia


                                [1] =&gt; id_provincia


                            )





                    )





                [columns] =&gt; Array


                    (


                        [id_cuenca] =&gt; CPgsqlColumnSchema Object


                            (


                                [name] =&gt; id_cuenca


                                [rawName] =&gt; &quot;id_cuenca&quot;


                                [allowNull] =&gt; 


                                [dbType] =&gt; numeric(5,0)


                                [type] =&gt; string


                                [defaultValue] =&gt; 


                                [size] =&gt; 5


                                [precision] =&gt; 5


                                [scale] =&gt; 0


                                [isPrimaryKey] =&gt; 1


                                [isForeignKey] =&gt; 


                                [_e:CComponent:private] =&gt; 


                                [_m:CComponent:private] =&gt; 


                            )





                        [denominacion] =&gt; CPgsqlColumnSchema Object


                            (


                                [name] =&gt; denominacion


                                [rawName] =&gt; &quot;denominacion&quot;


                                [allowNull] =&gt; 


                                [dbType] =&gt; character varying(100)


                                [type] =&gt; string


                                [defaultValue] =&gt; 


                                [size] =&gt; 100


                                [precision] =&gt; 100


                                [scale] =&gt; 


                                [isPrimaryKey] =&gt; 


                                [isForeignKey] =&gt; 


                                [_e:CComponent:private] =&gt; 


                                [_m:CComponent:private] =&gt; 


                            )





                        [id_provincia] =&gt; CPgsqlColumnSchema Object


                            (


                                [name] =&gt; id_provincia


                                [rawName] =&gt; &quot;id_provincia&quot;


                                [allowNull] =&gt; 1


                                [dbType] =&gt; numeric(2,0)


                                [type] =&gt; string


                                [defaultValue] =&gt; 


                                [size] =&gt; 2


                                [precision] =&gt; 2


                                [scale] =&gt; 0


                                [isPrimaryKey] =&gt; 


                                [isForeignKey] =&gt; 1


                                [_e:CComponent:private] =&gt; 


                                [_m:CComponent:private] =&gt; 


                            )





                    )





                [_e:CComponent:private] =&gt; 


                [_m:CComponent:private] =&gt; 


            )





        [columns] =&gt; Array


            (


                [id_cuenca] =&gt; CPgsqlColumnSchema Object


                    (


                        [name] =&gt; id_cuenca


                        [rawName] =&gt; &quot;id_cuenca&quot;


                        [allowNull] =&gt; 


                        [dbType] =&gt; numeric(5,0)


                        [type] =&gt; string


                        [defaultValue] =&gt; 


                        [size] =&gt; 5


                        [precision] =&gt; 5


                        [scale] =&gt; 0


                        [isPrimaryKey] =&gt; 1


                        [isForeignKey] =&gt; 


                        [_e:CComponent:private] =&gt; 


                        [_m:CComponent:private] =&gt; 


                    )





                [denominacion] =&gt; CPgsqlColumnSchema Object


                    (


                        [name] =&gt; denominacion


                        [rawName] =&gt; &quot;denominacion&quot;


                        [allowNull] =&gt; 


                        [dbType] =&gt; character varying(100)


                        [type] =&gt; string


                        [defaultValue] =&gt; 


                        [size] =&gt; 100


                        [precision] =&gt; 100


                        [scale] =&gt; 


                        [isPrimaryKey] =&gt; 


                        [isForeignKey] =&gt; 


                        [_e:CComponent:private] =&gt; 


                        [_m:CComponent:private] =&gt; 


                    )





                [id_provincia] =&gt; CPgsqlColumnSchema Object


                    (


                        [name] =&gt; id_provincia


                        [rawName] =&gt; &quot;id_provincia&quot;


                        [allowNull] =&gt; 1


                        [dbType] =&gt; numeric(2,0)


                        [type] =&gt; string


                        [defaultValue] =&gt; 


                        [size] =&gt; 2


                        [precision] =&gt; 2


                        [scale] =&gt; 0


                        [isPrimaryKey] =&gt; 


                        [isForeignKey] =&gt; 1


                        [_e:CComponent:private] =&gt; 


                        [_m:CComponent:private] =&gt; 


                    )





            )





        [relations] =&gt; Array


            (


                [ProvRelac] =&gt; CBelongsToRelation Object


                    (


                        [joinType] =&gt; LEFT OUTER JOIN


                        [on] =&gt; 


                        [alias] =&gt; 


                        [with] =&gt; Array


                            (


                            )





                        [name] =&gt; ProvRelac


                        [className] =&gt; Provincia


                        [foreignKey] =&gt; id_provincia


                        [select] =&gt; *


                        [condition] =&gt; 


                        [params] =&gt; Array


                            (


                            )





                        [group] =&gt; 


                        [join] =&gt; 


                        [having] =&gt; 


                        [order] =&gt; 


                        [_e:CComponent:private] =&gt; 


                        [_m:CComponent:private] =&gt; 


                    )





                [tbFuenteAguas] =&gt; CManyManyRelation Object


                    (


                        [limit] =&gt; -1


                        [offset] =&gt; -1


                        [together] =&gt; 


                        [index] =&gt; 


                        [joinType] =&gt; LEFT OUTER JOIN


                        [on] =&gt; 


                        [alias] =&gt; 


                        [with] =&gt; Array


                            (


                            )





                        [name] =&gt; tbFuenteAguas


                        [className] =&gt; FuenteAgua


                        [foreignKey] =&gt; tb_cuenca_fuente_agua(id_cuenca, id_fuente_agua)


                        [select] =&gt; *


                        [condition] =&gt; 


                        [params] =&gt; Array


                            (


                            )





                        [group] =&gt; 


                        [join] =&gt; 


                        [having] =&gt; 


                        [order] =&gt; 


                        [_e:CComponent:private] =&gt; 


                        [_m:CComponent:private] =&gt; 


                    )





            )





        [attributeDefaults] =&gt; Array


            (


            )





        [_model:CActiveRecordMetaData:private] =&gt; Cuenca Object


            (


                [_md:CActiveRecord:private] =&gt; CActiveRecordMetaData Object

RECURSION

                [_new:CActiveRecord:private] =&gt; 


                [_attributes:CActiveRecord:private] =&gt; Array


                    (


                    )





                [_related:CActiveRecord:private] =&gt; Array


                    (


                    )





                [_c:CActiveRecord:private] =&gt; 


                [_pk:CActiveRecord:private] =&gt; 


                [_alias:CActiveRecord:private] =&gt; t


                [_errors:CModel:private] =&gt; Array


                    (


                    )





                [_validators:CModel:private] =&gt; 


                [_scenario:CModel:private] =&gt; 


                [_e:CComponent:private] =&gt; 


                [_m:CComponent:private] =&gt; 


            )





    )





[_new:CActiveRecord:private] =&gt; 


[_attributes:CActiveRecord:private] =&gt; Array


    (


        [id_cuenca] =&gt; 4


        [denominacion] =&gt; gfgffgf


        [id_provincia] =&gt; 63


    )





[_related:CActiveRecord:private] =&gt; Array


    (


        [ProvRelac] =&gt; Provincia Object


            (


                [_md:CActiveRecord:private] =&gt; CActiveRecordMetaData Object


                    (


                        [tableSchema] =&gt; CPgsqlTableSchema Object


                            (


                                [schemaName] =&gt; public


                                [name] =&gt; tb_provincia


                                [rawName] =&gt; &quot;tb_provincia&quot;


                                [primaryKey] =&gt; id_provincia


                                [sequenceName] =&gt; sec_provincia


                                [foreignKeys] =&gt; Array


                                    (


                                    )





                                [columns] =&gt; Array


                                    (


                                        [id_provincia] =&gt; CPgsqlColumnSchema Object


                                            (


                                                [name] =&gt; id_provincia


                                                [rawName] =&gt; &quot;id_provincia&quot;


                                                [allowNull] =&gt; 


                                                [dbType] =&gt; numeric(2,0)


                                                [type] =&gt; string


                                                [defaultValue] =&gt; 


                                                [size] =&gt; 2


                                                [precision] =&gt; 2


                                                [scale] =&gt; 0


                                                [isPrimaryKey] =&gt; 1


                                                [isForeignKey] =&gt; 


                                                [_e:CComponent:private] =&gt; 


                                                [_m:CComponent:private] =&gt; 


                                            )





                                        [denominacion] =&gt; CPgsqlColumnSchema Object


                                            (


                                                [name] =&gt; denominacion


                                                [rawName] =&gt; &quot;denominacion&quot;


                                                [allowNull] =&gt; 


                                                [dbType] =&gt; character varying(50)


                                                [type] =&gt; string


                                                [defaultValue] =&gt; 


                                                [size] =&gt; 50


                                                [precision] =&gt; 50


                                                [scale] =&gt; 


                                                [isPrimaryKey] =&gt; 


                                                [isForeignKey] =&gt; 


                                                [_e:CComponent:private] =&gt; 


                                                [_m:CComponent:private] =&gt; 


                                            )





                                    )





                                [_e:CComponent:private] =&gt; 


                                [_m:CComponent:private] =&gt; 


                            )





                        [columns] =&gt; Array


                            (


                                [id_provincia] =&gt; CPgsqlColumnSchema Object


                                    (


                                        [name] =&gt; id_provincia


                                        [rawName] =&gt; &quot;id_provincia&quot;


                                        [allowNull] =&gt; 


                                        [dbType] =&gt; numeric(2,0)


                                        [type] =&gt; string


                                        [defaultValue] =&gt; 


                                        [size] =&gt; 2


                                        [precision] =&gt; 2


                                        [scale] =&gt; 0


                                        [isPrimaryKey] =&gt; 1


                                        [isForeignKey] =&gt; 


                                        [_e:CComponent:private] =&gt; 


                                        [_m:CComponent:private] =&gt; 


                                    )





                                [denominacion] =&gt; CPgsqlColumnSchema Object


                                    (


                                        [name] =&gt; denominacion


                                        [rawName] =&gt; &quot;denominacion&quot;


                                        [allowNull] =&gt; 


                                        [dbType] =&gt; character varying(50)


                                        [type] =&gt; string


                                        [defaultValue] =&gt; 


                                        [size] =&gt; 50


                                        [precision] =&gt; 50


                                        [scale] =&gt; 


                                        [isPrimaryKey] =&gt; 


                                        [isForeignKey] =&gt; 


                                        [_e:CComponent:private] =&gt; 


                                        [_m:CComponent:private] =&gt; 


                                    )





                            )





                        [relations] =&gt; Array


                            (


                                [tbCuencas] =&gt; CHasManyRelation Object


                                    (


                                        [limit] =&gt; -1


                                        [offset] =&gt; -1


                                        [together] =&gt; 


                                        [index] =&gt; 


                                        [joinType] =&gt; LEFT OUTER JOIN


                                        [on] =&gt; 


                                        [alias] =&gt; 


                                        [with] =&gt; Array


                                            (


                                            )





                                        [name] =&gt; tbCuencas


                                        [className] =&gt; Cuenca


                                        [foreignKey] =&gt; id_provincia


                                        [select] =&gt; *


                                        [condition] =&gt; 


                                        [params] =&gt; Array


                                            (


                                            )





                                        [group] =&gt; 


                                        [join] =&gt; 


                                        [having] =&gt; 


                                        [order] =&gt; 


                                        [_e:CComponent:private] =&gt; 


                                        [_m:CComponent:private] =&gt; 


                                    )





                                [tbEntidadClientes] =&gt; CHasManyRelation Object


                                    (


                                        [limit] =&gt; -1


                                        [offset] =&gt; -1


                                        [together] =&gt; 


                                        [index] =&gt; 


                                        [joinType] =&gt; LEFT OUTER JOIN


                                        [on] =&gt; 


                                        [alias] =&gt; 


                                        [with] =&gt; Array


                                            (


                                            )





                                        [name] =&gt; tbEntidadClientes


                                        [className] =&gt; TbEntidadCliente


                                        [foreignKey] =&gt; id_provincia


                                        [select] =&gt; *


                                        [condition] =&gt; 


                                        [params] =&gt; Array


                                            (


                                            )





                                        [group] =&gt; 


                                        [join] =&gt; 


                                        [having] =&gt; 


                                        [order] =&gt; 


                                        [_e:CComponent:private] =&gt; 


                                        [_m:CComponent:private] =&gt; 


                                    )





                                [tbEquipoBombeos] =&gt; CHasManyRelation Object


                                    (


                                        [limit] =&gt; -1


                                        [offset] =&gt; -1


                                        [together] =&gt; 


                                        [index] =&gt; 


                                        [joinType] =&gt; LEFT OUTER JOIN


                                        [on] =&gt; 


                                        [alias] =&gt; 


                                        [with] =&gt; Array


                                            (


                                            )





                                        [name] =&gt; tbEquipoBombeos


                                        [className] =&gt; TbEquipoBombeo


                                        [foreignKey] =&gt; id_provincia


                                        [select] =&gt; *


                                        [condition] =&gt; 


                                        [params] =&gt; Array


                                            (


                                            )





                                        [group] =&gt; 


                                        [join] =&gt; 


                                        [having] =&gt; 


                                        [order] =&gt; 


                                        [_e:CComponent:private] =&gt; 


                                        [_m:CComponent:private] =&gt; 


                                    )





                                [tbPozos] =&gt; CHasManyRelation Object


                                    (


                                        [limit] =&gt; -1


                                        [offset] =&gt; -1


                                        [together] =&gt; 


                                        [index] =&gt; 


                                        [joinType] =&gt; LEFT OUTER JOIN


                                        [on] =&gt; 


                                        [alias] =&gt; 


                                        [with] =&gt; Array


                                            (


                                            )





                                        [name] =&gt; tbPozos


                                        [className] =&gt; TbPozo


                                        [foreignKey] =&gt; id_provincia


                                        [select] =&gt; *


                                        [condition] =&gt; 


                                        [params] =&gt; Array


                                            (


                                            )





                                        [group] =&gt; 


                                        [join] =&gt; 


                                        [having] =&gt; 


                                        [order] =&gt; 


                                        [_e:CComponent:private] =&gt; 


                                        [_m:CComponent:private] =&gt; 


                                    )





                                [tbUebs] =&gt; CHasManyRelation Object


                                    (


                                        [limit] =&gt; -1


                                        [offset] =&gt; -1


                                        [together] =&gt; 


                                        [index] =&gt; 


                                        [joinType] =&gt; LEFT OUTER JOIN


                                        [on] =&gt; 


                                        [alias] =&gt; 


                                        [with] =&gt; Array


                                            (


                                            )





                                        [name] =&gt; tbUebs


                                        [className] =&gt; TbUeb


                                        [foreignKey] =&gt; id_provincia


                                        [select] =&gt; *


                                        [condition] =&gt; 


                                        [params] =&gt; Array


                                            (


                                            )





                                        [group] =&gt; 


                                        [join] =&gt; 


                                        [having] =&gt; 


                                        [order] =&gt; 


                                        [_e:CComponent:private] =&gt; 


                                        [_m:CComponent:private] =&gt; 


                                    )





                            )





                        [attributeDefaults] =&gt; Array


                            (


                            )





                        [_model:CActiveRecordMetaData:private] =&gt; Provincia Object


                            (


                                [_md:CActiveRecord:private] =&gt; CActiveRecordMetaData Object

RECURSION

                                [_new:CActiveRecord:private] =&gt; 


                                [_attributes:CActiveRecord:private] =&gt; Array


                                    (


                                    )





                                [_related:CActiveRecord:private] =&gt; Array


                                    (


                                    )





                                [_c:CActiveRecord:private] =&gt; 


                                [_pk:CActiveRecord:private] =&gt; 


                                [_alias:CActiveRecord:private] =&gt; t


                                [_errors:CModel:private] =&gt; Array


                                    (


                                    )





                                [_validators:CModel:private] =&gt; 


                                [_scenario:CModel:private] =&gt; 


                                [_e:CComponent:private] =&gt; 


                                [_m:CComponent:private] =&gt; 


                            )





                    )





                [_new:CActiveRecord:private] =&gt; 


                [_attributes:CActiveRecord:private] =&gt; Array


                    (


                        [id_provincia] =&gt; 63


                        [denominacion] =&gt; Pinar del Río


                    )





                [_related:CActiveRecord:private] =&gt; Array


                    (


                    )





                [_c:CActiveRecord:private] =&gt; 


                [_pk:CActiveRecord:private] =&gt; 63


                [_alias:CActiveRecord:private] =&gt; t


                [_errors:CModel:private] =&gt; Array


                    (


                    )





                [_validators:CModel:private] =&gt; 


                [_scenario:CModel:private] =&gt; update


                [_e:CComponent:private] =&gt; 


                [_m:CComponent:private] =&gt; 


            )





    )





[_c:CActiveRecord:private] =&gt; 


[_pk:CActiveRecord:private] =&gt; 4


[_alias:CActiveRecord:private] =&gt; t


[_errors:CModel:private] =&gt; Array


    (


    )





[_validators:CModel:private] =&gt; 


[_scenario:CModel:private] =&gt; update


[_e:CComponent:private] =&gt; 


[_m:CComponent:private] =&gt; 

)

1

=======================================

Y sin embargo el valor que muestra la iteración sobre $value es este:

["4","gfgffgf","63"]

Donde yo esperaba que apareciera la denominación de la Provincia con código id "63"

Saludos y gracias,

Yordanis.

Podes mostrar tu codigo actual con los print_r incluidos?? necesito ver una cosa…

Ok, voy a mostrar la función exactamente como la tengo, la variable boleana $show es solamente para mostrar una sola vez $value (para abreviar)…




	public function run()

	{

		$currentPage = $this->computePagingCurrentPage();

		$pageSize = $this->getPageSize();

    		

		$dataProvider=new CActiveDataProvider($this->nombreModelo, array(

			'pagination'=>array(

				'pageSize'=>$pageSize,

				'currentPage'=>$currentPage,

	    		),

		));

		if(isset($this->criteria))

			$dataProvider->criteria = $this->criteria;	

			

		$modelArray = $dataProvider->getData();

		$dat = array();

		$show = true;

		foreach ($modelArray as $value)

		{

			if($show)

			{

				echo '<pre>';

				echo print_r($value);

				echo '</pre>';

				$show = false;

			}

			//$modelAttrs = $value->attributes;

			$modelAttrs = array();

			foreach ($value as $col)

				$modelAttrs[] = $col;

			

			$model = $modelAttrs;

			$dat[] = $model;

		}

		

		$total = $dataProvider->totalItemCount;

		

		echo json_encode(array('datos'=>$dat,'total'=>$total));

	}



Veamos si entendi y espero que aun pueda ayudar…

Quieres combinar el resultado del modelo Cuenca y su relacion con ProvRelac, solo que no puedes acceder a la propiedades de ProvRelac y eso es lo que no puedes agregar al arreglo… solo agregas lo de Cuenta…

Entonces este pedazo de codigo deberia de resolver eso…




foreach ($modelArray as $value)

{

  /* OJO - AQUI ESTA EL PROBLEMA: AL OBTENER LOS DATOS DE CADA FILA, SOLO OBTENGO 

  LAS COLUMNAS CORRESPONDIENTES AL MODELO ESPECIFICADO EN LOS PARAMETROS */


  $modelAttrs = $value->attributes;

  $model = $modelAttrs;


  // esta es la relacion con el otro modelo

  $modelAttrsWith = $value->ProvRelac->attributes;

  $modelWith = $modelAttrsWith; 


  $dat[] = array_merge($model, $modelWith);

}



$dat[] al final contendra informacion del modelo Cuenta y del modelo ProvRelac.

Espero iluminarte con esto…

Gracias Jack, esa fue con la solución que me quedé…

Saludos.

Mira en las tripas de esta extension… igual te sirve… como veo que lo que quieres es expulsar datos en formato JSON:

http://www.yiiframework.com/extension/ejsonbehavior

Tambien su código muestra cómo mirar en relaciones with…

Un saludo