0

我想在 yii 中使用 tbgridview 显示这个 sql 查询。

这是我的控制器。

public function actionSVI(){
    $list = Workstation::model()->listSvi();
    $this->render('svi',array(
        'list'=>$list,
    ));
}

我的模型和 sql 查询。

public function listSvi(){
    $svi = Yii::app()->db->createCommand()
                ->select('*')
                ->from('workstation')
                ->where('ws_company_id=:id',array(':id'=>1))
                ->queryAll();

    return $svi;;
}

我目前正在使用此代码显示我的查询。

<?php 
foreach($list as $each){
    $company = Workstation::model()->findByPK($each['ws_id']);
    echo  "<tr><td>" . $company->companyName ."</td><td>". CHtml::link(CHtml::encode($company->ws_id), array('view','id'=>$company->ws_id))."</td><td>" .$company->branchName ."</td>","<td>". $company->departmentName. "</tr></td>";
    }               

?>

我只想使用这个 tbgridview 显示它。

<?php $this->widget('bootstrap.widgets.TbGridView', array(
'type'=>'striped',
'dataProvider'=>$dataProvider,
'template'=>"{items}",
'columns'=>array(
            'companyName',
        'branchName',
        'departmentName',
        'ws_id',
    array(
        'class'=>'bootstrap.widgets.TbButtonColumn',
        'template'=>'{view}',
        'buttons'=>array(
                'view'=>array('icon'=>'icon-search'),
            ),
    ),
),
)); ?>
<?php $this->endWidget();?>
4

2 回答 2

1

我认为做我认为你想做的最简单的方法是创建一个CActiveDataProvider并将用作你的小部件的 dataProvider 。此外,如果Workstation是 Active Record,您可以这样做:

$criteria = new CDbCriteria(
    array(
        'condition'=>"ws_company_id = '1'"
));

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

或类似的东西。

然后将该对象发送到您的视图。

于 2013-11-06T02:24:17.877 回答
0

如果您使用自己的 SQL 查询数据,请尝试CSqlDataProvider

$count=Yii::app()->db->createCommand('SELECT COUNT(*) FROM tbl_user')->queryScalar();
$sql='SELECT * FROM tbl_user';
$dataProvider=new CSqlDataProvider($sql, array(
    'totalItemCount'=>$count,
    'sort'=>array(
        'attributes'=>array(
             'id', 'username', 'email',
        ),
    ),
    'pagination'=>array(
        'pageSize'=>10,
    ),
));
// $dataProvider->getData() will return a list of arrays.
于 2013-11-06T03:31:41.943 回答