Dataprovider Manuale ....

Salve a tutti stò cercando di ottenere una query composita, per ricavare un oggetto dataProvider e passare poi all’estensione eexcelview.

Problema uno: non mi è sufficiente assegnare un oggetto Model al dataprovider.

Soluzione uno: al posto del dataProvider userò CSqlDataProvider che mi permette l’uso di una comune query sql.

Problema due: la mia query sql non è come nel codice qui sotto una semplice “SELECT * FROM”, ma bensì un costrutto composto da due query. Volendo ottenere cmq un CSqlDataProvider, dovrei creare un array manualmente con i risultati delle query citate prima o secondo voi esiste un modo + pulito? :rolleyes:


<?php

// CONTROLLER

public function actionViewExcel() 

        {

            $sql='SELECT * FROM tbl_paziente';

            $dataP=new CSqlDataProvider($sql, array(

                'sort'=>array(

                    'attributes'=>array(

                        'id', 'cognome', 'indirizzo',

                    ),

                ),

                'pagination'=>array(

                    'pageSize'=>10,

                ),

            ));

            $this->renderPartial('view_excel', array('dataP'=>$dataP));

        }

?>


<?php 

// VIEW


Yii::import('application.extensions.EExcelView');


$this->widget('EExcelView', array(

     'dataProvider'=> $dataP,

     'title'=>'Test',

     'autoWidth'=>true,

     'grid_mode'=>'export',

     'exportType'=>'Excel2007',

     'filename'=>'tabulato',

     

));

?>

Cioè hai due query che devono finire in un unico data provider?

Forse questo thread ti sarà utile!

Chiedo scusa per la domanda un pò ‘esotica’ come direbbe qualcuno … ma la realtà è che invece di tentar di aggirare l’ostacolo con + query per un risultato è bene che approfondisca meglio le potenzialità dell’sql :D e magari risolvo tutto con un’unica e sola query … :)