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!!