hola, tengo una consulta personalizada que necesito pasar a un dataprovider para crear el cgridview pero no encuentro cómo convertirla, esta es la consulta
$sql = "SELECT m.modalidad, COUNT(m.modalidad) AS total FROM contrato AS c
INNER JOIN (
ep INNER JOIN (
modalidadcontratacion AS m
) ON ep.modalidadcontratacion_id = m.id
)ON c.ep_id = ep.id
WHERE c.estadoid IN(13,22)
GROUP BY m.modalidad
;";
De antemano, gracias.
ya lo resolví, esto fue lo que encontré
public function totalmodalidad ()
{
$sql = "SELECT c.id, m.id AS modalidadid, m.modalidad, COUNT(m.modalidad) AS total FROM contrato AS c
INNER JOIN (
ep INNER JOIN (
modalidadcontratacion AS m
) ON ep.modalidadcontratacion_id = m.id
)ON c.ep_id = ep.id
WHERE c.estadoid IN(13,22)
GROUP BY m.modalidad
;";
$count = sizeof($sql);
return $dataProvider = new CSqlDataProvider($sql, array(
//'totalItemCount'=>$count,
'sort'=>array(
'attributes'=>array(
'modalidad, total' // csv of sortable column names
)
)
));
}
Este es el controller
public function actionTotalmodalidad()
{
$model = new Contrato('totalmodalidad');
$model->unsetAttributes(); // clear any default values
$this->render(
'totalmodalidad',
array(
'model' => $model,
)
);
}
Y esta la vista
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'reserva-grid',
'dataProvider'=>$model->totalmodalidad(),
'columns'=>array(
array(
'name'=>'modalidad',
'value'=>'$data["modalidad"]'
),
array(
'name'=>'total',
'value'=>'$data["total"]'
),
array(
'class'=>'CButtonColumn',
'template' => ' {seguimiento}',
'buttons' => array (
'seguimiento' => array
(
'label' =>'Gestionar Acciones', //Text label of the button.
'imageUrl' =>Yii::app()->baseUrl.'/images/view.png', //Image URL of the button.
'url' => 'Yii::app()->controller->createUrl("variables",array("id"=>$data["modalidadid"]))',
//'visible' => '($data->estadoid != 12) && Ep::model()->checkEp($data->id)',
//'options' => array("target"=>"_blank"),
),
),
),
),
));