如何在yii中使用tbgridview显示sql查询结果

时间:2013-11-06 00:20:20

标签: php sql twitter-bootstrap yii

我想在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>";
    }               

&GT;

我只想使用这个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();?>

2 个答案:

答案 0 :(得分:1)

我认为执行我认为您想要做的最简单的方法是创建一个CActiveDataProvider并使用 作为您的小部件的dataProvider。此外,如果Workstation是活动记录,则可以执行以下操作:

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

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

或类似的东西。

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

答案 1 :(得分: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.