簡體   English   中英

Yii:如何從CDataProvider獲取記錄,以及如何回顯記錄字段?

[英]Yii: How to get records from a CDataProvider , and how to echo record fields?

我的模型中有一個自定義數據提供程序

我在控制器中嘗試過

public function actionMonthTotal()
{
    $model=new Rapporti();
    $this->render('monthTotal',array(
            'dataProvider'=>$model->monthTotal(),
    ));
}

其中monthTotal是給我DataProvider的模型函數

實際上,“ monthTotal”是view.php的副本/過去,它使用的是_monthTotal的clistView,也就是_view.php的副本/過去。

我只需要簡單地從dataProvider中獲取數據集(“ SELECT COUNT,SUM,SUM等...”),然后迭代到記錄集以將一個簡單的TABLE回顯到monthTotal視圖中。

如何從視圖中使用dataProvider獲取記錄以及如何迭代低谷記錄器?

這是我的月份總數,處於“報告”模型中

實際報告是在關系中報告N-> 1 Pionierato(對不起,意大利語術語,但僅是對象名稱)

public function totalMonth() {
    $criteria = new CDbCriteria();
    $criteria->with = array ('pionierato');
    $criteria->condition = 'dataBetel=:month';
    $criteria->select = "COUNT(t.id) as numProclamatori,
                            pionierato.tipo as tipoPionierato,
                            SUM(libri) as sommaLibri,
                            SUM(opuscoli) as sommaOpuscoli,
                            SUM(ore) as sommaOre,
                            SUM(riviste) as sommaRiviste,
                            SUM(visite) as sommaVisite,
                            SUM(studi) as sommaStudi";

    $criteria->group  = "t.dataBetel, t.pionieratoId";
    $criteria->params = array ('month' => "2012-09-01");

    $dataProvider=new CActiveDataProvider('Rapporti', 
                                           array ('criteria' => $criteria)
                                         );

    return $dataProvider;
}

我需要使用此數據提供程序獲取將要輸出的3條記錄並打印3行表。 靜態的。

使用第一個答案的建議,我得到了:

實際結果

我以這種方式獲得了結果:

<?php 

foreach ($dataProvider->getData() as $id => $singleRecord) {
        $this->renderPartial('_monthTotal', array('data' => $singleRecord));
}

?>  

並刪除clistview小部件。

但是您的回答對我很有幫助,所以我會優先考慮您,謝謝!

嘗試:

public function actionMonthTotal()
{
    $model = Rapporti::model()->monthTotal();
    $this->render('monthTotal',array(
            'dataProvider'=>$model,
    ));
}

應該可以,您正在創建一個名稱為$ model的對象,該對象的值等於Rapporti模型中monthTotal()方法的返回值。

如果那不起作用,請通過將它復制(減去返回部分)到控制器中,而不是從模型中調用它來檢查您是否確實從monthTotal函數中獲得了結果。

在您的monthTotal視圖中,您可以使用CListView遍歷活動記錄,如下所示:

<?php $this->widget('zii.widgets.CListView', array(
    'dataProvider'=>$dataProvider,
    'itemView'=>'_view',
)); ?>

每次迭代都調用一個稱為“ _view”的子視圖。 可以使用$ data訪問該記錄的數據(例如:$ data-> id);

這是不使用CActiveDataprovider進行查詢的示例:

$model = Rapporti::model()->findAll(array(
    'condition' => 'dataBetel=:month',
    ...
));

您可以嘗試...或者,您可以使用findAllBySql()而不是findAll()並以這種方式鍵入查詢。 然后,您將可以使用foreach()循環遍歷數據集

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM