Buenas a todos,
Quiero crear un tabla CGridview a partir de una consulta SQL la cual es la siguiente:
SELECT CA.rut AS MAIN_ID,
CA.nombre AS nom,
CA.apellido_paterno AS ap,
CA.apellido_materno AS am,
SUM(RA.cantidad_cartas) AS totalC,
SUM(DA.cantidad_devoluciones) AS totalD
FROM cartero AS CA
INNER JOIN
carga_diaria AS CD
ON (CD.rut_cartero = CA.rut)
INNER JOIN registro_acuse AS RE
ON (CD.codigo_acuse_recibo = RE.codigo_acuse_recibo)
INNER JOIN devolucion_acuse AS DA
ON (RA.codigo_acuse_recibo = DA.codigo_acuse_recibo)
GROUP BY id, nom, ap, am
ORDER BY ap DESC
En mi controlador tengo esto:
public function actionPagos() {
$sql = "SELECT CA.rut AS MAIN_ID,
CA.nombre AS nom,
CA.apellido_paterno AS ap,
CA.apellido_materno AS am,
SUM(RA.cantidad_cartas) AS totalC,
SUM(DA.cantidad_devoluciones) AS totalD
FROM cartero AS CA
INNER JOIN
carga_diaria AS CD
ON (CD.rut_cartero = CA.rut)
INNER JOIN registro_acuse AS RE
ON (CD.codigo_acuse_recibo = RE.codigo_acuse_recibo)
INNER JOIN devolucion_acuse AS DA
ON (RA.codigo_acuse_recibo = DA.codigo_acuse_recibo)
GROUP BY id, nom, ap, am
ORDER BY ap DESC";
$rawData = Yii::app()->db->createCommand($sql)->queryAll();
$arrayDataProvider = new CArrayDataProvider($rawData, array(
'keyField' => 'MAIN_ID', // PRIMARY KEY
'id' => 'Pagos' // ID of the data provider itself
));
$this->render('Pagos', array(
'arrayDataProvider'=>$arrayDataProvider
));
}
y en vista admin.php tengo lo siguiente:
<?php
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'data-grid',
'dataProvider'=>$arrayDataProvider,
'columns'=>array(
array(
'header'=>'R.U.T',
'name'=>'MAIN_ID',
'value'=>'$data["id"]'
),
array(
'header'=>'Nombre',
'name'=>'nom',
'value'=>'$data["nom"]'
),
array(
'header'=>'Apellido',
'name'=>'ap',
'value'=>'$data["ap"]." ".$data["am"]'
),
array(
'header'=>'Cantidad',
'name'=>'totalC',
'value'=>'$data["totalC"]'
),
array(
'header'=>'Devoluciones',
'name'=>'totalD',
'value'=>'$data["totalD"]'
),
),
));?>
El problema es que al cargar la página me muestra el error La propiedad "dataProvider" no puede estar vacia.
No sé como arreglar ese problema, o si hay una forma mejor de crear una tabla a partir de una sentencia SQL.
De antemano, gracias por su ayuda