Saludos ,soy nuevo en Yii,estoy usando SGB Postgres ,tengo una funcion en postgres de la siguiente manera
CREATE OR REPLACE FUNCTION public.palabra_acepciones (
id integer
)
RETURNS TABLE (
acepcion varchar,
tomo varchar
) AS
$body$
SELECT acepcion.acepcion, obra_completa.tomo
FROM acepcion, obra_completa, palabra, obra, acepcion_obra
WHERE palabra.id=$1
AND acepcion.id_palabra=palabra.id
AND obra_completa.id=obra.id_obracompleta
AND acepcion.id=acepcion_obra.id_acepcion
AND obra.id=acepcion_obra.id_obra;
$body$
LANGUAGE 'sql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100 ROWS 1000;
no es nada complicado me retorna una tabla con dos columnas …ahora cuando ejecuto
$list=Yii::app()->db->createCommand("select palabra_acepciones('$id')")->queryAll();
$dataProvider=new CArrayDataProvider($list);//esto es básico ,sin muchas complicaciones
obtengo
CArrayDataProvider Object
(
[keyField] => id
[rawData] => Array
(
[0] => Array
(
[palabra_acepciones] => ("lorem itsum dolor ",tomo1)
)
)
[caseSensitiveSort] => 1
[_id:private] => id
[_data:private] =>
[_keys:private] =>
[_totalItemCount:private] =>
[_sort:private] =>
[_pagination:private] =>
[_e:private] =>
[_m:private] =>
)
como ven el rowData esta algo raro porque,no me esta devolviendo el array indexado por el nombre de la funcion y no por los campos de la funcion …
ahora si repito lo mismo pero de esta forma …
$list=Yii::app()->db->createCommand("select distinct acepcion.acepcion, obra_completa.tomo
FROM acepcion, obra_completa, palabra, obra, acepcion_obra
WHERE palabra.id='$id'
AND acepcion.id_palabra=palabra.id
AND obra_completa.id=obra.id_obracompleta
AND acepcion.id=acepcion_obra.id_acepcion
AND obra.id=acepcion_obra.id_obra")->queryAll();
$dataProvider=new CArrayDataProvider($list);
obtengo como salida
CArrayDataProvider Object
(
[keyField] => id
[rawData] => Array
(
[0] => Array
(
[acepcion] => lorem itsum dolor
[tomo] => tomo1
)
)
[caseSensitiveSort] => 1
[_id:private] =>
[_data:private] =>
[_keys:private] =>
[_totalItemCount:private] =>
[_sort:private] =>
[_pagination:private] =>
[_e:private] =>
[_m:private] =>
)
que es lo que esta mal? la funcion en postgres? Uso el EMS Manager for Postgres y me devuelve la tabla bien…