exibir resultado com join em cgridview

Pessoal, bom dia,

Estou construindo o meu primeiro sistema Web com o Yii e estou com uma grande dúvida no momento de extrair “Relatórios”, que são consultas complexas com left e right joins em tabelas que não representam modelos do Yii.

Tenho um Modelo para cada Formulário que gera um relatório, a seguir um exemplo

class FormRel12 extends CFormModel {

public $data_inicio;

public $data_fim;

public function rules()


{


    return array(


 array('data_inicio, data_fim', 'safe'),


           );


}





public function attributeLabels()


{


    return array(


        'data_inicio'=>'Data de Início',


        'data_fim'=>'Data de Término',


    );


}

}

No Controller recebo um Post com estes parâmetros e gostaria realizar uma consulta no banco de dados e exibir o resultado em um CGridView. Porém percebi que quando realizo uma consulta mais complexa com Joins eu não consigo apresentar em um CGridView o resultado. Segue um trecho do meu método no Controller

if(isset($_POST[‘FormRel12’])){

$model->attributes=$_POST['FormRel12'];

if($model->validate()){

	$sql ="select  mdo.matricula,


			CC_id,


			FROM 006_usuario_has_recurso_has_cc urc


			LEFT JOIN


			(SELECT matricula, Recurso_id from 006_mao_de_obra) mdo 


			on urc.Recurso_id = mdo.Recurso_id


			WHERE data_inicio >= "."'".$model->data_inicio."'"." AND data_fim <="."'".$model->data_fim."' ORDER BY data_inicio ";





	$sql_count ="select COUNT(*) FROM 006_usuario_has_recurso_has_cc urc


			LEFT JOIN


			(SELECT matricula, Recurso_id from 006_mao_de_obra) mdo 


			on urc.Recurso_id = mdo.Recurso_id


			WHERE data_inicio >= "."'".$model->data_inicio."'"." AND data_fim <="."'".$model->data_fim."' ORDER BY data_inicio ";


			


	$count=Yii::app()->db->createCommand($sql_count)->queryScalar();





	$this->dataProvider=new CSqlDataProvider($sql, array(


		'totalItemCount'=>$count,


				


		'pagination'=>false,


	));





	$this->widget('zii.widgets.grid.CGridView', array(


		'dataProvider'=>$this->dataProvider,


		'summaryText'=>'',


	));


}

}

Pesquisei bastante sobre este assunto e acredito que o grande problema esteja no join do sql pois utiliza-se o .(PONTO) para associar tabelas e o Yii entende como uma relação e não consegue exibir no CGridView.

Alguém tem alguma ideia sobre como resolver este problema?

Muito Obrigado!!

Daniel,

Boa noite,

Tente usar o Cgridview com CArrayDataProvider. Acredito que poderá resolver seu problema. Outra coisa, dá uma olhada nesse link também que pode clarear bastante.