dataprovider desde una consulta

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"),

                    ),

                ),

            ),

	),

));